Как бороться с одинарной кавычкой в ​​SQL-запросе Word VBA? - PullRequest
6 голосов
/ 20 октября 2010

Я получаю имя клиента из выпадающего списка и использую это значение для запроса к таблице Excel, однако имя может содержать одинарную кавычку (пример: мясо Адама). Это ломает мое приложение, и как мне сделать запрос с переменной, содержащей одинарную кавычку?

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

Ответы [ 2 ]

7 голосов
/ 20 октября 2010

Это делает вас широко открытыми для атаки 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
7 голосов
/ 20 октября 2010

Если вы укажете две одинарные кавычки '', одна выйдет из-под другой и приведет к одинарной кавычке, попробуйте заменить ее следующим образом:

customerName = Replace(customerName, "'", "''")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...