【问题标题】: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()

感谢您的帮助。

【问题讨论】:

    标签: sql vb.net


    【解决方案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()
    

    编辑:

    + 更改为 &amp;,因为 C# 是“本机语言”。

    【讨论】:

    • 感谢您提供的链接,我会调查一下。
    猜你喜欢
    • 2019-07-15
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2021-08-27
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多