【发布时间】:2011-11-23 13:41:40
【问题描述】:
我在 Delphi 7 中使用 ADODB,对于 UPDATE 查询,我使用 TADOConnection Execute 过程“recordsAffected”变量获取修改记录的数量。 像这样:
MyConnexion.Execute(sReq, iResReq, [eoExecuteNoRecords]);
iResReq 是修改后的记录号。
现在我想使用带有参数化 SQL 的参数化查询:
SQL.Add('UPDATE TABLE SET NAME="TEST" WHERE NAME=:PARAM);
Parameters.ParamByName('PARAM').text:='Smith';
但我真的不知道如何找到修改后的记录数。 除了我的问题,你知道关于 ADODB 参数化查询的好教程吗?
【问题讨论】:
-
非常好!我没有意识到 ExecSQL 是一个 FUNCTION 并返回修改记录的数量。
-
正如 Mikael 在他的回答中指出的那样,TADOCommand 更适合此目的。 TADOQuery.ExecSQL 从其祖先 TCustomADODataSet 内部调用 TADOCommand.Execute。所以我更喜欢TADOCommand ;)
-
好的,我有一个可行的答案。但是“TADOCommand.execute”、“TADOQuery.execSQL”……之间的“好”选择并不明显。
-
很难说你以后会用那个数据库访问对象做什么。如果您还想将它用于某些数据获取,那么
TADOQuery是“正确”的选择。如果您只希望它用于不返回任何数据的查询(如 INSERT、UPDATE、CREATE),那么TADOCommand是“正确的”。正如我之前在评论中提到的,TADOQuery在内部使用TADOCommandExecSQL函数调用。