执行动作查询

RDO

如果您的应用程序需要直接处理表,或执行一个维护操作(就象 SQL Server 的 DBCC 函数一样),您可以用 Execute 方法来直接运行查询。在这种情况下,您不需要 ODBC 或 SQL Server 创建一个临时 SP 来运行查询,因为这样的操作只需要进行一次。(如果这是一个标准操作,那么创建一个 SP 来做这件事要更有效一些。)注意,您可以使用 RowsAffected 属性来弄清受该查询影响的行数。

Private Sub ExecuteButton_Click()
   sql = "Begin Transaction " _
    & " Update Authors " _
    & " set Year_Born = 1900 where year_born is null" _
    & " rollback transaction"
   Screen.MousePointer = vbHourglass
   cn.Execute sql, rdExecDirect
   ShowRows = cn.RowsAffected
   Screen.MousePointer = vbDefault
End Sub

ADO

当您需要执行动作查询时,可以利用 ADO 中的 Execute 方法。在这种情况下,您必须设置比 RDO 的情况更多的属性,但这些属性提高了数据访问性能。这是因为 ADO 不必要轮询服务器以决定做什么,或如何处理查询。注意,Execute 方法的新 output 参数返回受到影响的行数。一般来说,您看不到 Visual Basic 使用传回到应用程序的参数;只能看到传给对象接口的参数。

Private Sub ExecuteButton_Click()
   Dim Qy As New ADODB.Command
   Dim Rows As Long
   sql = "Begin Transaction " _
    & " Update Authors " _
    & " set Year_Born = 1900 where year_born is null" _
    & " rollback transaction"
   Qy.ActiveConnection = cn
   Qy.CommandText = sql
   Qy.CommandType = adCmdText
   Qy.Execute Rows
   MsgBox Rows & " rows would have been affected", vbInformation
End Sub