MS Access, параметризованные запросы, что не так с этим кодом? - PullRequest
0 голосов
/ 08 октября 2018

Мне нравится использовать параметризованный запрос для доступа к базе данных PostreSQL с помощью ADO / Ms Access.

'sql-statement: SELECT id, str FROM tbl WHERE str LIKE '<userstring>';
'str is character varying in the DB

Dim cmd As ADODB.Command
Dim param1 As ADODB.Parameter

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = con 'connection is open
cmd.CommandText = "SELECT id, str FROM tbl WHERE str LIKE @FirstParameter"
Set param1 = cmd.CreateParameter("@FirstParameter", adVarWChar, adParamInput)
param1.Value = userstring
cmd.Parameters.Append param1 ' ERROR

Мне нужно перевести ошибку: «Параметр-объект задан неправильно. Недопустимый или недействительный. "

1 Ответ

0 голосов
/ 08 октября 2018

ADO использует вопросительные знаки для указания параметров.Вероятно, если вы используете комбинацию провайдера и индикатора параметров, параметр не распознается.

Postgresql использует знаки доллара для обозначения параметров с использованием синтаксиса PREPARE ... EXECUTE, но для этого требуется передать параметрыснова (с вопросительными знаками) в предложении EXECUTE, поэтому я не рекомендую

К сожалению, у меня нет удобной настройки postgresql, но попробуйте следующее:

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = con 'connection is open
cmd.CommandText = "SELECT id, str FROM tbl WHERE str LIKE ?"
Set param1 = cmd.CreateParameter(, adVarWChar, adParamInput, Len(userstring), userstring) 'Unnamed parameter
cmd.Parameters.Append param1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...