防止使用参数查询不工作的转义撇号
Posted
技术标签:
【中文标题】防止使用参数查询不工作的转义撇号【英文标题】:Preventing escaping apostrophes with parameter query not working 【发布时间】:2011-11-22 21:01:33 【问题描述】:我试图通过使用带有 SqlConnection 的参数化查询来避免在我的字符串变量中转义撇号,但它不起作用。任何帮助将不胜感激。
更新:这是当前代码...
'Populate Connection Object
Dim oCnn As New SqlConnection(strConnection)
'Define our sql query
Dim sSQL As String = "INSERT INTO [" & foreignTable & "] (data_text) VALUES (@data_text) ; "
'Populate Command Object
Dim oCmd As New SqlCommand(sSQL, oCnn)
'Add up the parameter, associated it with its value
oCmd.Parameters.AddWithValue("@data_text", data_text)
'Opening Connection for our DB operation
oCnn.Open()
Try
Dim results As Integer = oCmd.ExecuteScalar
Catch ex As Exception
LabelImport.Text &= "<font color=red>ROOT Import ERROR: " & ex.ToString & ", From Database: " & dbName & ", Text String: " & data_text & "</font><br />"
Throw
End Try
oCnn.Close()
oCmd.Parameters.Clear()
感谢您的帮助。
【问题讨论】:
【参考方案1】:是的,这是不对的。
应该是这样的:
Dim sSQL As String = "INSERT INTO [" & foreignTable & "] (data_text) VALUES (@data_text);"
对于参数:
oCmd.Parameters.AddWithValue("@data_text", data_text)
注意:我不“认为”您可以将表名作为参数传递。您必须在字符串中包含表名。见Parametise table name in .Net/SQL?
另外,改变这个:
Dim results As Integer = oCmd.ExecuteScalar
到
Dim results as Integer = oCmd.ExecuteNonQuery()
【讨论】:
现在除了 10 条左右带有撇号的记录外,IT 正在工作 @marc11h 你能定义不为 10 条带撇号的记录工作吗?错误? 是的,因为这个数字可以更大,这是测试数据。 我想我明白了。问题是记录没有被插入。没有报告错误。 @marc11h 也许通过添加您现在使用的新代码来编辑您的问题。它的工作原理非常简单,所以我猜你仍然有语法错误。【参考方案2】:您只能在创建查询时使用表名(我的意思是从部分连接它:"INSERT INTO " + foreignTable + " (data_text) VALUES...
,AFAIK),而不是作为查询参数。查看SqlParameterCollection.AddWithValue on MSDN 了解更多关于SqlCommand
参数的信息,这里也有很好的例子。
'Populate Connection Object
Dim oCnn As New SqlConnection(strConnection)
'Define our sql query
Dim sSQL As String = "INSERT INTO " & foreignTable & " (data_text) VALUES (@data_text);"
'Populate Command Object
Dim oCmd As New SqlCommand(sSQL, oCnn)
'Add up the parameter, associated it with its value
oCmd.Parameters.AddWithValue("@data_text", data_text)
'Opening Connection for our DB operation
oCnn.Open()
编辑:
+
更改为 &
,因为 C# 是“本机语言”。
【讨论】:
感谢您提供的链接,我会调查一下。以上是关于防止使用参数查询不工作的转义撇号的主要内容,如果未能解决你的问题,请参考以下文章