Access女士,参数化查询,这段代码有什么问题?

时间:2018-10-08 10:47:54

标签: postgresql ms-access

我喜欢使用参数化查询通过ADO / Ms Access访问PostreSQL数据库。

'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 :(得分:1)

ADO使用问号指示参数。很有可能,通过使用提供程序和参数指示符的组合,无法识别参数。

PostgreSQL使用PREPARE ... EXECUTE语法使用Dollarsigns来指示参数,但这需要您在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