簡體   English   中英

遇到包含撇號的名稱(例如O'Conner)時執行查詢時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM