Excel Vba - 在sql字符串中使用撇号

Rez*_*nor 2 sql excel ms-access vba excel-vba

我正在使用excel将数据输入到Access数据库中,并且我的一些数据字符串包含用于测量的撇号.

这是我的SQL输入字符串

    stSQL = "INSERT INTO Products (ProductName, ProductDescription, ProductUnit, SupplierID) " & _
            "Values ('" & cboxItemNum & "', '" & txtDescription & "', '" & txtUnit & "', " & linkPID & ")"

    cn.Execute (stSQL)
Run Code Online (Sandbox Code Playgroud)

我的字符串如下:

Aliplast 4E白色.30"X 80'X 1/4"柔软.

在这个字符串中'80之后导致错误,我不知道如何解决这个问题.我不能告诉用户不要输入撇号.我怎么能绕过这个?

谢谢

Fio*_*ala 10

您可以使用参数(推荐)或使用替换来更正此问题.

& Replace(txtDescription,"'","''") & 
Run Code Online (Sandbox Code Playgroud)

参数

Dim cmd As New ADODB.command
cn.Open ServerConnect

cmd.ActiveConnection = cn

stSQL = "INSERT INTO Products (ProductName, " _
   & "ProductDescription, ProductUnit, SupplierID) " _
   & "Values (param1,param2,param3,param4)"

cmd.CommandText = stSQL
cmd.CommandType = adCmdText
With cmd
   .Parameters.Append .CreateParameter( _
         "param1", adInteger, adParamInput, , cboxItemNum)
   .Parameters.Append .CreateParameter( _
         "param2", adVarChar, adParamInput, 50, txtDescription )
   .Parameters.Append .CreateParameter( _
         "param3", adInteger, adParamInput, , txtUnit )
   .Parameters.Append .CreateParameter( _
         "param4", adInteger, adParamInput, , linkPID )
End with
cmd.Execute recs
Run Code Online (Sandbox Code Playgroud)

请注意,虽然我已将这些参数param1命名为param4,但为了方便起见,重要的是顺序,它必须与参数的使用顺序相匹配.

  • 请使用参数,或谷歌左右[SQL注入](http://en.wikipedia.org/wiki/SQL_injection) (2认同)