VB中遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)
發(fā)布時(shí)間:2008-08-05 閱讀數(shù): 次 來(lái)源:網(wǎng)樂(lè)原科技
在VB中,用數(shù)據(jù)庫(kù)引擎和數(shù)據(jù)訪問(wèn)對(duì)象DAO可以創(chuàng)建功能強(qiáng)大的客戶/服務(wù)器應(yīng)用程序。對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)是開(kāi)發(fā)這類應(yīng)用程序的關(guān)鍵,本文將介紹在VB中用DAO通過(guò)數(shù)據(jù)庫(kù)引擎訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)的方法。
用DAO訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)可以通過(guò)三步來(lái)實(shí)現(xiàn),即數(shù)據(jù)連接、數(shù)據(jù)處理和斷開(kāi)連接。下面主要介紹數(shù)據(jù)連接和數(shù)據(jù)處理的具體操作。
數(shù)據(jù)連接
DAO通過(guò)鏈接遠(yuǎn)程表的方式來(lái)進(jìn)行數(shù)據(jù)連接。這樣,數(shù)據(jù)雖然駐留在遠(yuǎn)程數(shù)據(jù)源上,但在本地的數(shù)據(jù)庫(kù)中可以存儲(chǔ)與遠(yuǎn)程數(shù)據(jù)的永久性連接,同時(shí)緩存鏈接的表結(jié)構(gòu)信息,從而在下一次訪問(wèn)該表時(shí), 不用再次從服務(wù)器中檢索這些結(jié)構(gòu)信息,加快了連接速度。一旦鏈接了一個(gè)表,該鏈接便會(huì)保留在各會(huì)話期間,直到連接斷開(kāi)。鏈接遠(yuǎn)程表的具體操作是:
用 OpenDatabase 方法打開(kāi)將要包含該鏈接的本地?cái)?shù)據(jù)庫(kù),用 CreateTableDef 方法在該數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新的TableDef對(duì)象,將 TableDef 對(duì)象的 Connect 屬性設(shè)置為一個(gè)合法的連接字符串,標(biāo)識(shí)要訪問(wèn)的遠(yuǎn)程數(shù)據(jù)庫(kù)類型、數(shù)據(jù)文件的路徑以及用戶名和遠(yuǎn)程數(shù)據(jù)源密碼等。將 TableDef 對(duì)象的 SourceTableName 屬性設(shè)置為遠(yuǎn)程數(shù)據(jù)庫(kù)中要訪問(wèn)的表的名稱。 添加 TableDef 對(duì)象到 TableDefs 集合中。
實(shí)現(xiàn)鏈接遠(yuǎn)程表操作的代碼如下:
Public Sub LinkTable(strDB As String, strRoDB As String, _
strCn As String, strTdf As String, linkTdfName As String)
Dim linkTdf As New TableDef
Set dbs = OpenDatabase(strDB)
linkTdf.Name = linkTdfName 100
tempTable = UCase(linkTdf.Name)
For i = 0 To dbs.TableDefs.Count - 1
If UCase(dbs.TableDefs(i).Name) = tempTable Then
If MsgBox(linkTdfName + " 已存在,是否刪除 ?", _
vbQuestion + vbYesNo) = vbYes Then
dbs.TableDefs.Delete linkTdf.Name
Exit For
Else: MsgBox "重新輸入新表名"
linkTdfName = InputBox(" 新表名")
GoTo 100
End If
End If
Next i
Set linkTdf = dbs.CreateTableDef(linkTdfName) '鏈接遠(yuǎn)程表
linkTdf.Connect = ";database=" + strCn
linkTdf.SourceTableName = strTdf
dbs.TableDefs.Append linkTdf
End Sub