[英]Error executing query when encountering name containing an apostrophe (e.g. O'Conner)
我的數據庫程序具有如下語句:
variable = "SELECT * from Staff where StaffName = '" & cStaffName & "'"
直到我有一個名字中帶有'(撇號)的工作人員為止,此方法才能正常工作,因為它結束了開始的撇號。
SELECT * from Staff where StaffName = 'O'Conner'
有沒有辦法解決這個問題而不用她的名字代替撇號?
您只需要使用參數化查詢。
Using con = new SqlConnection(....)
Using cmd = new SqlCommand("SELECT * from Staff where StaffName = @name", con)
con.Open
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = cStaffName
Using reader = cmd.ExecuteReader
.....
End Using
End Using
End Using
在這種情況下,您將一個參數添加到SqlCommand參數集合中。 命令文本不再具有字符串連接,而是包含參數占位符(@name)。 參數本身包含您要傳遞給查詢的值。 這樣,值中嵌入的引號就沒有問題。
您還將獲得額外的好處,以避免用戶輸入出現任何類型的Sql Injection問題
variable = "SELECT * from Staff where StaffName = '" & Replace(cStaffName, "'", "\'") & "'"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.