간단한 명령 만들기 및 실행
간단한 명령은 매개 변수화되지 않고 지속성이 필요하지 않은 명령입니다. 간단한 명령을 만들고 실행하는 방법에는 세 가지가 있습니다.
Command 개체 사용
연결 개체 사용
Recordset 개체 사용
Command 개체 사용
Command 개체를 사용하여 간단한 명령을 만들려면 Command 개체의 CommandText 속성에 명령을 할당하고 CommandType 속성에 적절한 값을 설정해야 합니다. 명령을 실행하려면 열려 있는 연결이 Command 개체의 ActiveConnection 속성에 할당된 다음 Command 개체에서 Execute 메서드를 호출해야 합니다.
다음 코드 조각에서는 Command 개체를 사용하여 데이터 원본에 대해 명령을 실행하는 기본 방법을 보여 있습니다. 이 예제에서는 행 반환 명령을 사용하고 명령 실행 결과를 Recordset 개체로 반환합니다.
'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
Recordset 개체 사용
명령을 텍스트 문자열로 만들고 실행을 위해 명령 유형(adCmdText)과 함께 Recordset 개체의 Open 메서드로 패싱할 수도 있습니다. 다음 코드 조각은 이를 보여 줍니다.
Const DS = "MySqlServer"
Const DB = "Northwind"
Const DP = "SQLOLEDB"
Dim objRs As New ADODB.Recordset
Dim CommandText As String
Dim ConnectionString 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
Connection 개체 사용
열려 있는 Connection 개체에서 명령을 실행할 수도 있습니다. 이제 이전 코드 예제는 다음과 같습니다.
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