使用ADO时,在成功执行SQL时返回数据库消息

时间:2010-04-29 18:52:51

标签: sql-server vb6 ado

我正在开发一个传统的VB6应用程序,在我看了VB6或ADO之后已经有很长一段时间了。该应用程序的一件事是执行SQL任务,然后将成功/失败输出到XML文件中。如果出现错误,则将文本插入任务节点。

我被要求做的是尝试对成功执行的任务产生的其他平凡消息执行相同操作,例如(323行受影响)

没有使用命令对象,它只是一个ADODB.Connection对象。以下是代码的要点:

Dim sqlStatement As String
Set sqlStatement = /* sql for task */

Dim sqlConn As ADODB.Connection
Set sqlConn = /* connection magic */

sqlConn.Execute sqlStatement, , adExecuteNoRecords

我捕获非错误消息的最佳方式是什么,以便我可以输出它们?或者甚至可能吗?

3 个答案:

答案 0 :(得分:4)

除了在例程中有一个通用的错误处理程序外,ADO连接对象还有一个错误集合。执行某些操作后,检查计数错误> 0如果是,则需要迭代集合并记录所有错误。如果要在记录后继续,则有清除方法。

在进行快速测试项目后,我发现使用 WithEvents VB声明我的变量会添加InfoMessage事件。我运行了一个DBCC CHECKDB命令,并触发了一次InfoMessage事件。 pConnection变量中包含284个错误以及所有其他消息。

注意:Connection.Errors集合基于0。

答案 1 :(得分:4)

受影响的行数是通过Connnection对象的Execute方法的可选第二个参数返回的

Dim num As Long    
sqlConn.Execute sqlStatement, num, adExecuteNoRecords     
MsgBox num & " records were affected"

答案 2 :(得分:0)

我认为受影响的行是查询分析器/企业管理器的功能,而不是通过API返回的内容。

如果我没记错,使用经典的ADO,我们必须先使用MoveLast然后使用MoveFirst来强制所有记录通过线路,然后对Recordset进行计数。

我还记得一些关于使用哪种游标类型影响回来的记录数量的事。

除此之外,你是否试图获取打印声明......似乎你没有使用存储过程,所以除了数不清楚,你期望得到什么?