데이터 편집
ADO를 사용하여 데이터 원본에 연결하고, 명령을 실행하고, Recordset 개체에서 결과를 가져온 다음, Recordset 내에서 탐색하는 방법을 설명했습니다. 이 섹션에서는 다음 기본 ADO 작업인 데이터 편집에 중점을 둡니다.
이 섹션에서는 한 가지 중요한 변경 내용과 함께 데이터 검사에 도입된 샘플 Recordset을 계속 사용합니다. 다음 코드는 Recordset을 여는 데 사용됩니다.
'BeginEditIntro
Dim strSQL As String
Dim objRs1 As ADODB.Recordset
strSQL = "SELECT * FROM Shippers"
Set objRs1 = New ADODB.Recordset
objRs1.Open strSQL, GetNewConnection, adOpenStatic, _
adLockBatchOptimistic, adCmdText
' Disconnect the Recordset from the Connection object.
Set objRs1.ActiveConnection = Nothing
'EndEditIntro
코드의 중요한 변경은 클라이언트 커서의 사용을 나타내는 GetNewConnection 함수(다음 예제에 표시됨)에서 Connection 개체의 CursorLocation 속성을 adUseClient와 동일하게 설정하는 것입니다. 클라이언트 쪽 커서와 서버 쪽 커서 간의 차이점에 대한 자세한 내용은 커서 및 잠금 이해를 참조하세요.
CursorLocation 속성의 adUseClient 설정은 데이터 원본(이 경우 SQL Server)에서 클라이언트 코드의 위치(데스크톱 워크스테이션)로 커서의 위치를 이동합니다. 이 설정은 커서를 만들고 관리하기 위해 ADO가 클라이언트에서 OLE DB용 클라이언트 커서 엔진을 호출하도록 합니다.
Open 메서드의 LockType 매개 변수가 adLockBatchOptimistic으로 변경된 것을 확인할 수도 있습니다. 이렇게 하면 일괄 처리 모드에서 커서가 열립니다. (공급자는 여러 변경 내용을 캐시하고 UpdateBatch 메서드를 호출할 때만 기본 데이터 원본에 씁니다.) Recordset에 대한 변경 내용은 UpdateBatch 메서드가 호출될 때까지 데이터베이스에서 업데이트되지 않습니다.
마지막으로 이 섹션의 코드는 수정된 버전의 GetNewConnection 함수를 사용합니다. 이 버전의 함수는 이제 클라이언트 쪽 커서를 반환합니다. 함수는 다음과 같습니다.
'BeginNewConnection
Public Function GetNewConnection() As ADODB.Connection
On Error GoTo ErrHandler:
Dim objConn As New ADODB.Connection
Dim strConnStr As String
strConnStr = "Provider='SQLOLEDB';Initial Catalog='Northwind';" & _
"Data Source='MySqlServer';Integrated Security='SSPI';"
objConn.ConnectionString = strConnStr
objConn.CursorLocation = adUseClient
objConn.Open
Set GetNewConnection = objConn
Exit Function
ErrHandler:
Set objConn = Nothing
Set GetNewConnection = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Function
'EndNewConnection
이 섹션에서는 다음 항목을 다룹니다.