編輯資料
我們已說明如何使用 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
程式碼的重大變更,就是將 Connection 物件的 CursorLocation 屬性設定為與 GetNewConnection 函式中的 adUseClient 相等 (如下一個範例所示),這表示使用了用戶端資料指標。 如需用戶端和伺服器端資料指標之間差異的詳細資訊,請參閱瞭解資料指標和鎖定。
CursorLocation 屬性的 adUseClient 設定會將資料指標的位置從資料來源 (在此案例中為 SQL Server) 移動到用戶端程式碼 (桌面工作站) 的位置。 此設定會強制 ADO 在用戶端上叫用 Client Cursor Engine for 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
此章節包含下列主題。