我的数据库程序有如下声明:
variable = "SELECT * from Staff where StaffName = '" & cStaffName & "'"
这个工作正常,直到我有一名工作人员在其中有'(撇号),因为它结束了起始撇号。
SELECT * from Staff where StaffName = 'O'Conner'
有没有办法解决这个问题而不用她的名字替换撇号?
答案 0 :(得分:2)
您只需使用参数化查询。
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用户输入问题
答案 1 :(得分:0)
variable = "SELECT * from Staff where StaffName = '" & Replace(cStaffName, "'", "\'") & "'"