Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi ADODB:使用参数化查询修改的记录数_Delphi_Ado_Adodb - Fatal编程技术网

Delphi ADODB:使用参数化查询修改的记录数

Delphi ADODB:使用参数化查询修改的记录数,delphi,ado,adodb,Delphi,Ado,Adodb,我在Delphi7中使用ADODB,对于更新查询,我使用TADOConnect执行过程“recordsAffected”变量获得修改记录的数量。 像这样: MyConnexion.Execute(sReq, iResReq, [eoExecuteNoRecords]); 其中,iResReq是修改后的记录编号 现在,我想将参数化查询与参数化SQL一起使用,如: SQL.Add('UPDATE TABLE SET NAME="TEST" WHERE NAME=:PARAM); Paramete

我在Delphi7中使用ADODB,对于更新查询,我使用TADOConnect执行过程“recordsAffected”变量获得修改记录的数量。 像这样:

 MyConnexion.Execute(sReq, iResReq, [eoExecuteNoRecords]);
其中,
iResReq
是修改后的记录编号

现在,我想将参数化查询与参数化SQL一起使用,如:

SQL.Add('UPDATE TABLE SET NAME="TEST" WHERE NAME=:PARAM);
Parameters.ParamByName('PARAM').text:='Smith';
但我真的不知道如何找到修改过的记录计数。
除了我的问题,你还知道关于ADODB参数化查询的好教程吗?

使用TADOCO命令,你可以这样做

var
    RecordsAffected: Integer;
begin
    ADOCommand1.CommandText := 'UPDATE TABLE SET NAME="TEST" WHERE NAME=:PARAM';
    ADOCommand1.Parameters.ParamByName('PARAM').Value:='Smith';
    ADOCommand1.Execute(RecordsAffected, EmptyParam);

如果您使用ExecSQL(如注释中所述),也可以使用TADOQuery进行查询。

您是对的,我的代码错了(我会编辑它)!CommandText允许使用参数?@Mikael,您可以使用TADOQuery执行update语句,+1;)@特拉马-你是对的。刚刚测试过。很快就会更新答案:)。什么是“EmptyParam”?太好了!喜欢docwiki中的这句话:“封送接口在Linux下也存在,但我们现在无法腾出资源来记录它们。”。。。那一定是在Kylix时代写的。非常好!我没有意识到ExecSQL是一个函数,返回修改记录的数量。正如Mikael在他的回答中指出的,它更适合于这个目的。从其祖先内部调用。所以我宁愿;)好的,我有一个有效的答案。但是“TADOCommand.execute”、“TADOQuery.execSQL”中的“好”选择。。。不明显。很难说您稍后将如何处理DB访问对象。如果您还想将其用于某些数据获取,则
TADOQuery
是“正确”的选择。如果您只希望它用于不返回任何数据(如插入、更新、创建)的查询,则
TADOCommand
是“正确”的。正如我在之前的评论中提到的,
TADOQuery
ExecSQL
函数调用中内部使用
TADOCommand