Erstellen und Ausführen eines einfachen Befehls
Ein einfacher Befehl ist ein Befehl, der nicht parameterisiert ist und keine Persistenz erfordert. Es gibt drei Möglichkeiten zum Erstellen und Ausführen eines einfachen Befehls.
Verwenden eines Command-Objekts
Verwenden eines Connection-Objekts
Verwenden eines Recordset-Objekts
Verwenden eines Command-Objekts
Um einen einfachen Befehl mithilfe eines Command-Objekts zu erstellen, müssen Sie die Anweisung der CommandText-Eigenschaft eines Command-Objekts zuweisen und den entsprechenden Wert für die CommandType-Eigenschaft festlegen. Das Ausführen des Befehls erfordert, dass eine offene Verbindung der ActiveConnection-Eigenschaft des Command-Objekts zugewiesen wird, gefolgt von einem Aufruf der Execute-Methode im Command-Objekt.
Der folgende Codeausschnitt zeigt die grundlegende Methode der Verwendung des Command-Objekts zum Ausführen eines Befehls für eine Datenquelle. In diesem Beispiel wird ein Befehl, der Zeilen zurückgibt, verwendet und die Ergebnisse der Befehlsausführung als Recordset-Objekt zurückgegeben.
'BeginBasicCmd
On Error GoTo ErrHandler:
Dim objConn As New ADODB.Connection
Dim objCmd As New ADODB.Command
Dim objRs As New ADODB.Recordset
objCmd.CommandText = "SELECT OrderID, OrderDate, " & _
"RequiredDate, ShippedDate " & _
"FROM Orders " & _
"WHERE CustomerID = 'ALFKI' " & _
"ORDER BY OrderID"
objCmd.CommandType = adCmdText
' Connect to the data source.
Set objConn = GetNewConnection
objCmd.ActiveConnection = objConn
' Execute once and display...
Set objRs = objCmd.Execute
Debug.Print "ALFKI"
Do While Not objRs.EOF
Debug.Print vbTab & objRs(0) & vbTab & objRs(1) & vbTab & _
objRs(2) & vbTab & objRs(3)
objRs.MoveNext
Loop
'clean up
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing
Set objCmd = Nothing
Exit Sub
ErrHandler:
'clean up
If objRs.State = adStateOpen Then
objRs.Close
End If
If objConn.State = adStateOpen Then
objConn.Close
End If
Set objRs = Nothing
Set objConn = Nothing
Set objCmd = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
'EndBasicCmd
'BeginNewConnection
Private Function GetNewConnection() As ADODB.Connection
Dim oCn As New ADODB.Connection
Dim sCnStr As String
sCnStr = "Provider='SQLOLEDB';Data Source='MySqlServer';" & _
"Integrated Security='SSPI';Initial Catalog='Northwind';"
oCn.Open sCnStr
If oCn.State = adStateOpen Then
Set GetNewConnection = oCn
End If
End Function
'EndNewConnection
Verwenden eines Recordset-Objekts
Sie können auch einen Befehl als Textzeichenfolge erstellen und sie an die Open-Methode für ein Recordset-Objekt zusammen mit dem Befehlstyp (adCmdText) für die Ausführung übergeben. Im folgenden Codeausschnitt wird dieser Fehler veranschaulicht:
Const DS = "MySqlServer"
Const DB = "Northwind"
Const DP = "SQLOLEDB"
Dim objRs As New ADODB.Recordset
Dim CommandText As String
Dim ConnctionString As String
CommandText = "SELECT OrderID, OrderDate, " & _
"RequiredDate, ShippedDate " & _
"FROM Orders " & _
"WHERE CustomerID = 'ALFKI' " & _
"ORDER BY OrderID"
ConnectionString = "Provider=" & DP & _
";Data Source=" & DS & _
";Initial Catalog=" & DB & _
";Integrated Security=SSPI;"
' Connect to data source and execute the SQL command.
objRs.Open CommandText, ConnectionString, _
adOpenStatic, adLockReadOnly, adCmdText
Debug.Print "ALFKI"
Do While Not objRs.EOF
Debug.Print vbTab & objRs(0) & vbTab & objRs(1) & vbTab & _
objRs(2) & vbTab & objRs(3)
objRs.MoveNext
Loop
'Clean up.
objRs.Close
Set objRs = Nothing
Verwenden eines Connection-Objekts
Sie können auch einen Befehl auf einem geöffneten Connection-Objekt ausführen. Das vorherige Codebeispiel wird nun zu diesem:
Const DS = "MySqlServer"
Const DB = "Northwind"
Const DP = "SQLOLEDB"
Dim objConn As New ADODB.Connection
Dim objRs As New ADODB.Recordset
CommandText = "SELECT OrderID, OrderDate, " & _
"RequiredDate, ShippedDate " & _
"FROM Orders " & _
"WHERE CustomerID = 'ALFKI' " & _
"ORDER BY OrderID"
ConnectionString = "Provider=" & DP & _
";Data Source=" & DS & _
";Initial Catalog=" & DB & _
";Integrated Security=SSPI;"
' Connect to the data source.
objConn.Open ConnectionString
' Execute command through the connection and display...
Set objRs = objConn.Execute(CommandText)
Debug.Print "ALFKI"
Do While Not objRs.EOF
Debug.Print vbTab & objRs(0) & vbTab & objRs(1) & vbTab & _
objRs(2) & vbTab & objRs(3)
objRs.MoveNext
Loop
'Clean up.
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing