【问题标题】:return database message on successful sql execution using VBScript使用 VBScript 成功执行 sql 时返回数据库消息
【发布时间】:2017-10-05 22:57:19
【问题描述】:

我需要在使用 vbscript 成功执行 sql 语句后捕获 sql 消息。这是我的代码。

Public Function ExecuteAPI_String(sql_Statement)
Dim num 
On Error Resume Next
Set objRecordSet = objConnection.Execute sql_Statement,num,adExecuteNoRecords
If Err.Number <> 0 Then
    ExecuteSQLStatement_String = Err.description
    objRecordSet.Close
    Err.Clear
Else
    ExecuteAPI_String = num & "records were affected"
    objRecordSet.Close
End If

【问题讨论】:

  • 如果您发布从ExecuteSQLStatement_StringExecuteAPI_String 收到的结果消息会很有帮助。

标签: vbscript adodb


【解决方案1】:

这里的问题是On Error Resume Next的使用,因为它会导致任何错误的语句被跳过并设置Err对象。如果您注释掉 On Error Resume Next,您将看到实际错误,这与您的 SQL 查询的执行无关;

Set objRecordSet = objConnection.Execute sql_Statement,num,adExecuteNoRecords

不是一个有效的声明,因为方法需要用这样的括号括起来;

Set objRecordSet = objConnection.Execute(sql_Statement, num, adExecuteNoRecords)

您还需要确保您传递给Execute() 方法的所有值都是有效的(例如adExecuteNoRecords 被正确定义)

一旦您确定该行正确执行,您就可以取消注释On Error Resume Next

【讨论】:

  • 谢谢@Lankymart。我试过这个:我收到一个错误 Object required Dim num Err.Clear Set objRecordSet = connStr.Execute(Sql_Statement, num, ADODB.ExecuteOptionEnum.adExecuteNoRecords) If Err.Number &lt;&gt; 0 Then ExecuteSQLStatement_String = Err.Description Err.Clear Else If isNull(objRecordSet) or objRecordSet.EOF = True Then ExecuteSQLStatement_String = Null Else ExecuteSQLStatement_String = objRecordSet.Fields(colname).Value End If End If objRecordSet.Close On Error GoTo 0