遇到包含撇号的名称时执行查询时出错(例如O' Conner)

时间:2014-10-01 09:05:47

标签: sql vb.net

我的数据库程序有如下声明:

variable = "SELECT * from Staff where StaffName = '" & cStaffName & "'"

这个工作正常,直到我有一名工作人员在其中有'(撇号),因为它结束了起始撇号。

SELECT * from Staff where StaffName = 'O'Conner'

有没有办法解决这个问题而不用她的名字替换撇号?

2 个答案:

答案 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, "'", "\'") & "'"