Delphi ADODB:使用参数化查询修改的记录数
我在Delphi7中使用ADODB,对于更新查询,我使用TADOConnect执行过程“recordsAffected”变量获得修改记录的数量。 像这样: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
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
。