【问题标题】:How to deal with single quote in Word VBA SQL query?如何处理 Word VBA SQL 查询中的单引号?
【发布时间】:2011-04-27 20:45:22
【问题描述】:

我从下拉列表中获取客户名称并使用该值查询 Excel 电子表格,但是该名称可以包含单引号(例如:Adam's Meat)。这会破坏我的应用程序,如何使用包含单引号的变量进行查询?

Private Sub cboCompany_Change()
            Dim customerName As String
            customerName = cboCompany.Value

rsT.Open "SELECT Customer, Postcode, Address1, Address2, State, Country FROM Customers WHERE  Customer = '" & customerName & "'", cn, adOpenStatic

【问题讨论】:

    标签: sql vba ms-word


    【解决方案1】:

    在你指定两个单引号''的地方,一个会转义另一个并导致单引号,尝试像这样替换它:

    customerName = Replace(customerName, "'", "''")
    

    【讨论】:

    • 但是它与电子表格中的客户名称不匹配?
    • 当实际值匹配时,两个单引号将被视为一个单引号。
    • 好吧,我不得不把它改成 customerName = Replace(customerName, "'", "''")。谢谢萨弗拉兹
    • @Morgan:欢迎,距离我上次使用 VB 已经有 5 年了,忘记语法了 ;)
    【解决方案2】:

    这让您很容易受到 SQL 注入攻击。我建议将其更改为像这样的参数化查询

    Dim cmd as NEW ADODB.Command
    
    With cmd
     .CommandText=”SELECT foo from tblBar where foo=?”
     .Parameters.Append .CreateParameter("@foo", adVarChar, adParamInput, 50, “What ever you want”)
     .ActiveConnection=dbCon
     .CommandType=adCmdText
    End With
    
    Set rst=cmd.execute
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-24
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多