【问题标题】:How to check a number of inserted/modified records in TADOCommand?如何检查 TADOCommand 中插入/修改的记录数?
【发布时间】:2011-06-21 14:57:06
【问题描述】:

我正在使用 SQL Server 数据库,在调用一个简单的 SQL 脚本后,我想知道有多少记录受到脚本中最后(或唯一)执行的语句的影响。

我在 Delphi 的 TADOCommand 中找不到如何实现此目的的参考,我知道 SQL Server 将此信息提供给提供者。我知道在另一个查询中获取@@ROWCOUNT 之类的解决方法,但这会带来一些开销和不必要的复杂性。

谢谢。

【问题讨论】:

    标签: sql sql-server delphi ado rowcount


    【解决方案1】:

    你会用吗

    function Execute(var RecordsAffected: Integer; const Parameters: OleVariant): _Recordset; 
    

    Execute 方法的版本?

    来自doc

    RecordsAffected 表示数量 记录,如果命令操作 受命令影响的数据 执行后。

    所以这应该可以满足您的需求。

    免责声明:我无法针对 SQL Server 进行测试(没有)。

    【讨论】:

    • 感谢您的回答,我不知道这组参数。不幸的是,正如我刚刚检查过的,受影响的记录变量在执行后仍然为 0 :( cmd := TADOCommand.Create(nil); cmd.Commandtext := 'DELETE FROM void'; ra := 0; cmd.Execute(ra , 0); 断言(ra > 0);
    • DELETE FROM void 应该做什么?您确定任何记录实际上都受到了影响吗?
    • void 是一个示例表名,因此该语句将删除表 [dbo].[void] 中的所有记录。我确定表中有记录,我也在简单的应用程序上测试过。
    • 好吧,要么你的表实际上已经是空的,要么你的提供程序有问题,或者......我刚刚用 TAdoCommand 对 MS Access 数据库测试了DELETE FROM <table>,并得到了准确的数字通过RecordsAffected var 参数返回的已删除记录数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    相关资源
    最近更新 更多