在表示 sql 查询的字符串中转义双引号字符
Escape double quote character in string representing a sql query
我正在尝试使用字符串来表示 VB 中的 SQL 查询。即
dim sSql As string
sSql = "SELECT thing FROM example where xml NOT LIKE '%<FUNDED YESNO=""YES"">%'"
问题是,当它被传递给 SQL 时,它似乎传递了我在这里用来转义的双引号 YESNO=""YES"" 这会导致问题。
转义这些双引号的正确方法是什么?我试过了
sSql = "SELECT thing FROM example where xml NOT LIKE '%<FUNDED YESNO=" & Chr(34) & "YES" & Chr(34) & ">%'
无果。
就个人而言,无论如何我都倾向于使用参数化查询:
Dim Sql As string = "SELECT thing FROM example where xml NOT LIKE '%' + @Search + '%'"
Using cn As New SqlConnection("connection string here"), _
cmd As New SqlCommand(Sql, cn)
cmd.Parameters.Add("@xml", SqlDbType.NVarChar, 4000).Value = "<FUNDED YESNO=""YES"">"
cn.Open()
' ...
End Using
I promise 用于匹配的字符串最终将如下所示:
<FUNDED YESNO="YES">
无论如何,参数化查询倾向于回避此类问题,它们对于避免 SQL 注入错误和攻击非常重要。
现在您还可以轻松地将此代码重构为一种方法,您可以在其中发送您想要的任何搜索键。
我正在尝试使用字符串来表示 VB 中的 SQL 查询。即
dim sSql As string
sSql = "SELECT thing FROM example where xml NOT LIKE '%<FUNDED YESNO=""YES"">%'"
问题是,当它被传递给 SQL 时,它似乎传递了我在这里用来转义的双引号 YESNO=""YES"" 这会导致问题。
转义这些双引号的正确方法是什么?我试过了
sSql = "SELECT thing FROM example where xml NOT LIKE '%<FUNDED YESNO=" & Chr(34) & "YES" & Chr(34) & ">%'
无果。
就个人而言,无论如何我都倾向于使用参数化查询:
Dim Sql As string = "SELECT thing FROM example where xml NOT LIKE '%' + @Search + '%'"
Using cn As New SqlConnection("connection string here"), _
cmd As New SqlCommand(Sql, cn)
cmd.Parameters.Add("@xml", SqlDbType.NVarChar, 4000).Value = "<FUNDED YESNO=""YES"">"
cn.Open()
' ...
End Using
I promise 用于匹配的字符串最终将如下所示:
<FUNDED YESNO="YES">
无论如何,参数化查询倾向于回避此类问题,它们对于避免 SQL 注入错误和攻击非常重要。
现在您还可以轻松地将此代码重构为一种方法,您可以在其中发送您想要的任何搜索键。