繁体   English   中英

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

[英]Ms Access, parameterized queries, What is wrong with this code?

我喜欢使用参数化查询通过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

我必须翻译错误:“参数对象设置不正确。不一致或无效。”

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

PostgreSQL使用Dollarsigns使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM