ADO判断SQL语句影响行

使用ADO操作数据库,往往需要判断当前SQL影响的行数,Execute 方法 (ADO Command)可以实现该功能。

 

执行在 CommandText 属性中指定的查询、SQL 语句或存储过程。

语法

对于按行返回的 Command

Set recordset = command.Execute( RecordsAffected, Parameters, Options )

对于非按行返回的 Command

command.Execute RecordsAffected, Parameters, Options

返回值

返回 Recordset 对象引用。

参数

RecordsAffected   可选,长整型变量,提供者向其返回操作所影响的记录数目。RecordsAffected 参数仅应用于操作查询或存储过程。RecordsAffected 不返回由返回结果的查询或存储过程所返回的记录数目。详细信息,请使用 RecordCount 属性。

Parameters   可选,变体型数组,使用 SQL 语句传送的参数值。(用该参数传送时输出参数将不返回正确值。)

Options   可选,长整型值,指示提供者如何计算 Command 对象的 CommandText 属性。该值可为下列常量之一:

常量说明
AdCmdText指示提供者应按命令的文本定义(如 SQL 语句)来计算 CommandText
AdCmdTable指示 ADO 应生成 SQL 查询以便从 CommandText 命名的表中返回所有行。
AdCmdTableDirect指示提供者应从 CommandText 命名的表中返回所有行。
AdCmdStoredProc指示提供者应按存储过程计算 CommandText
AdCmdUnknown指示 CommandText 中的命令类型未知。
adAsyncExecute指示命令应异步执行。
adAsyncFetch指示对由 CacheSize 属性指定的初始数量之后的剩余行应使用异步提取。

本列表中前 4 个常量的详细说明请参见 CommandType 属性。

说明

使用 Command 对象的 Execute 方法可执行在对象的 CommandText 属性中指定的查询。如果 CommandText 属性指定按行返回查询,执行所产生的任何结果都将存储在新的 Recordset 对象中。如果该命令不是按行返回查询,则提供者返回关闭的 Recordset 对象。某些应用程序语言允许忽略该返回值(如果不需要任何 Recordset)。

如果查询带有参数,将使用 Command 对象中参数的当前值,除非通过 Execute 调用传送的参数覆盖它们。可以在调用 Execute 方法时通过省略某些参数的新值来覆盖参数子集。指定参数的次序与其在方法中被传送的次序相同。例如,如果有 4 个(或更多)参数并且希望只为第一个和第四个参数传送新值,则可以将 Array(var1,,,var4) 作为 Parameters 参数传送。

注意    Parameters 参数中传送时输出参数将不返回正确的值。

该操作结束后将发出 ExecuteComplete 事件。

<script language=Javascript> document.write(" "); </script>

 

DEMO:

         _variant_t vRecordsAffected;

         try
         {
                  m_pConnection->Execute( _bstr_t(sSql), &vRecordsAffected, adCmdText);
           }

        vRecordsAffected ---表示当前SQL执行的影响行数。

 

不过在项目中遇到个问题,如果一个表中带有触发器,并且该触发器并不是每次都能执行成功(如 update),当往该表中执行

insert语句的时候,update却没执行成功,这个时候vRecordsAffected 值返回零。

当使用vRecordsAffected 作为返回值判断insert成功时,会造成数据的无法正常入库,分析查询分析器就可以获取两次影响行状态,但如何在VC中实现该功能,这个问题一直没解决.....

 

后来改用之前写的http://blog.csdn.net/happyhell/archive/2007/12/21/1956851.aspx数据库回滚方案,解决了该问题,防止数据丢失的问题。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值