"必须使用ADO参数化查询声明变量@myvariable"错误

Ian*_*oyd 4 sql-server delphi ado parameterized-query

我试图使用ADO参数化查询.执行该Command对象会引发错误:

必须声明变量'@filename'

@filename使用CreateParameter/Append以下方式声明参数:

sql := 'INSERT INTO Sqm(Filename, data) VALUES(@filename, @data)';

command := CoCommand.Create;
command.Set_ActiveConnection(Connection.ConnectionObject);
command.Set_CommandText(sql);
command.Set_CommandType(adCmdText);
command.Parameters.Append(Command.CreateParameter('@filename', adLongVarWChar, adParamInput, -1, Filename));
command.Parameters.Append(Command.CreateParameter('@data', adLongVarWChar, adParamInput, -1, xml);

command.Execute({out}recordsAffected, EmptyParam, adCmdText or adExecuteNoRecords);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

RRU*_*RUZ 13

据我所知,ADO不支持SQL语句中的命名参数(SELECT,INSERT,UPDATE),因此必须使用?char来指示参数

sql := 'INSERT INTO Sqm(Filename, data) VALUES(?, ?)';
Run Code Online (Sandbox Code Playgroud)

然后按照sql语句中使用的顺序分配参数值.

ADO 2.6介绍该NamedParameters属性,但它似乎只适用于存储过程.

  • 那肯定解释了为什么命名参数在ADO中不起作用.*oi vay Microsoft* (2认同)