我們已說明如何使用 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 方法時,提供者才會快取多個變更,並將其寫入基礎數據源。在呼叫 UpdateBatch 方法之前,不會在資料庫中更新對 Recordset 所做的變更。
最後,本節中的程序代碼會使用 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
本節包含下列主題。
使用 Delete 方法 刪除記錄