幾種注冊(cè)O(shè)DBC數(shù)據(jù)源的方法
發(fā)布時(shí)間:2008-08-24 閱讀數(shù): 次 來(lái)源:網(wǎng)樂(lè)原科技
一、手工配置
1.ODBC數(shù)據(jù)源管理器
在進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)時(shí),為了達(dá)到配置ODBC,進(jìn)行DSN定義注冊(cè)的目的,微軟給出了一個(gè)手工操作的解決方法。在Windows 9X操作系統(tǒng)的控制面板中,有一個(gè)名為“ODBC數(shù)據(jù)源(32位)”的圖標(biāo),可以通過(guò)它激活專門(mén)為用戶設(shè)置ODBC環(huán)境的程序(ODBC Data Source Administrator,ODBC數(shù)據(jù)源管理器)。在Windows 2000操作系統(tǒng)中,上述圖標(biāo)被放置在控制面板的“管理工具”里面。
這個(gè)用于設(shè)置ODBC環(huán)境的程序叫做桌面驅(qū)動(dòng)程序,它支持?jǐn)?shù)種DBMS(Database Management System,數(shù)據(jù)庫(kù)管理系統(tǒng))。當(dāng)用戶想增加一個(gè)數(shù)據(jù)源和一個(gè)所需要的驅(qū)動(dòng)程序時(shí),可以通過(guò)ODBC數(shù)據(jù)源管理器的配置對(duì)話框配置特定類型的數(shù)據(jù)庫(kù)。大多數(shù)情況下,在編寫(xiě)對(duì)數(shù)據(jù)庫(kù)操作的程序時(shí),我們至少需要知道諸如數(shù)據(jù)庫(kù)文件名、系統(tǒng)(本地或遠(yuǎn)程)、文件夾等信息,同時(shí)要給數(shù)據(jù)源命名。
2.定義數(shù)據(jù)源的類型
用戶可以定義以下三種類型的數(shù)據(jù)源:
●用戶數(shù)據(jù)源:作為位于計(jì)算機(jī)本地的用戶數(shù)據(jù)源而創(chuàng)建的,并且只能被創(chuàng)建這個(gè)數(shù)據(jù)源的用戶所使用;
●系統(tǒng)數(shù)據(jù)源:作為屬于計(jì)算機(jī)或系統(tǒng)而不是特定用戶的系統(tǒng)數(shù)據(jù)源而創(chuàng)建的,用戶必須有訪問(wèn)權(quán)才能使用;
●文件數(shù)據(jù)源:指定到文件中作為文件數(shù)據(jù)源而定義的,任何已經(jīng)正確地安裝了驅(qū)動(dòng)程序的用戶皆可以使用這種數(shù)據(jù)源。
3.?dāng)?shù)據(jù)源注冊(cè)的步驟
以Microsoft Access為例,如果在C:\myfile\文件夾里創(chuàng)建了一個(gè)名為myexample.mdb的數(shù)據(jù)庫(kù)文件,其注冊(cè)步驟如下:
●在控制面板里找到“ODBC數(shù)據(jù)源”圖標(biāo),打開(kāi)數(shù)據(jù)源管理器的交互界面;
●筆者創(chuàng)建的數(shù)據(jù)庫(kù)文件是供本機(jī)上的用戶使用的,所以這里選擇“用戶 DSN”;
●然后按下“添加”按鈕,在彈出的數(shù)據(jù)源管理器對(duì)話框里,為自己所要?jiǎng)?chuàng)建的數(shù)據(jù)源選擇一個(gè)驅(qū)動(dòng)程序,本文的數(shù)據(jù)庫(kù)文件是用Microsoft Access創(chuàng)建的,所以要選擇“Microsoft Access Driver (*.mdb)”;
●按“完成”按鈕后,進(jìn)入一個(gè)標(biāo)題為“ODBC Microsoft Access 安裝”的界面,在其中設(shè)置“數(shù)據(jù)源名”為“mydatasource”,選取數(shù)據(jù)庫(kù)文件 “C:\myfile\myexample.mdb”,然后確定即可。
這樣我們就完成了一個(gè)簡(jiǎn)單的ODBC數(shù)據(jù)源的注冊(cè)。當(dāng)然,在以上的步驟中,用戶可以根據(jù)自己的不同需要,設(shè)置不同的選項(xiàng)。
注冊(cè)結(jié)束后,我們便可以在對(duì)數(shù)據(jù)庫(kù)的編程中,操作該數(shù)據(jù)庫(kù)了。
二、在VB中注冊(cè)數(shù)據(jù)源
在VB中對(duì)數(shù)據(jù)庫(kù)進(jìn)行編程時(shí),可以利用RegisterDataSource方法為ODBC數(shù)據(jù)源輸入連接信息到 Windows 注冊(cè)表中。它的語(yǔ)法是:
RegisterDataSource DSN, driver, silent, attributes
其中參數(shù)代表的含義分別為:
●DSN:字符串表達(dá)式,它是在引用數(shù)據(jù)源描述信息塊時(shí)所使用的名字。例如,如果數(shù)據(jù)源是一個(gè)ODBC遠(yuǎn)程數(shù)據(jù)庫(kù),這就是服務(wù)器的名字;如果是用戶DSN,則是注冊(cè)的數(shù)據(jù)源的名字。
●drive:字符串表達(dá)式,表示ODBC驅(qū)動(dòng)程序的名稱。它并不是 ODBC 驅(qū)動(dòng)程序動(dòng)態(tài)連接庫(kù) (DLL) 文件名。例如,SQL Server 是驅(qū)動(dòng)程序名,而 SQLSRVR.DLL 是 DLL 文件名。必須安裝ODBC 及相應(yīng)的驅(qū)動(dòng)程序。
●silent:布爾類型值,如果不想顯示 ODBC 驅(qū)動(dòng)程序?qū)υ捒?,用以提示指定?qū)動(dòng)程序的信息,該值就為 True;如果希望顯示 ODBC 驅(qū)動(dòng)程序?qū)υ捒颍撝稻蜑?False。如果 silent 為 True,那么attributes必須包含所有必需的指定驅(qū)動(dòng)程序的信息。
●attributes:字符串表達(dá)式,它是一個(gè)要添加到 ODBC.INI 文件中的關(guān)鍵字列表。編寫(xiě)程序時(shí),可以根據(jù)需要選擇若干attributes的參數(shù)進(jìn)行設(shè)置。
例如:我們可以編寫(xiě)如下的VB程序,達(dá)到與上面手工注冊(cè)一樣的目的。程序清單如下:
Sub RegisterDataSource()
Dim strAttribs As String
’建造關(guān)鍵字字符串。
’C:\myfile\myexample.l.mdb數(shù)據(jù)庫(kù)文件名(包含路徑)
strAttribs =“DBQ=” _
& “C:\myfile\myexample.mdb” _
& Chr$(13) & “OemToAnsi=No” _
& Chr$(13) & “SERVER=SEQUEL” _
& Chr$(13) & “Network=DBNMPNTW” _
& Chr$(13) & “Database=WorkDB”_
& Chr$(13) &“Address=\\SEQUEL\PIPE\SQL\QUERY”
’建立新的注冊(cè)的 DSN。
rdoEngine.rdoRegisterDataSource “mydatasource”,
“Microsoft Access Driver (*.mdb)”, True,
strAttribs
End Sub
Private Sub Form_Load()
Call rdoRegisterDataSource
End Sub
注意:為了在代碼中使用rdoEngine和遠(yuǎn)程數(shù)據(jù)對(duì)象,必須先在“引用“對(duì)話框中設(shè)置一個(gè)到 Microsoft Remote Data Object 2.0 對(duì)象庫(kù)的引用,否則在第一次引用rdoEngine 對(duì)象時(shí)會(huì)導(dǎo)致編譯錯(cuò)誤。
三、利用注冊(cè)表合并
1.解決思路
考查ODBC數(shù)據(jù)源注冊(cè)后對(duì)Windows注冊(cè)表的修改情況,我們可以發(fā)現(xiàn)所注冊(cè)的數(shù)據(jù)源對(duì)Windows注冊(cè)表的影響關(guān)鍵集中在[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI]里。
這樣,我們導(dǎo)出[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI],每次以之為模板,把所要注冊(cè)的數(shù)據(jù)源信息加入到注冊(cè)表導(dǎo)出文件的對(duì)應(yīng)位置,然后再將該文件與系統(tǒng)注冊(cè)表合并即可。
2.具體操作
首先,我們要弄清楚Regedit 及其參數(shù)的含義。Regedit是打開(kāi)系統(tǒng)注冊(cè)表的命令。在“開(kāi)始\運(yùn)行\(zhòng)”中輸入即可。它的三個(gè)參數(shù)含義如下:
●Regedit /e myfile.reg :表示把注冊(cè)表文件導(dǎo)出到myfile.reg 文件中,相當(dāng)于復(fù)制整個(gè)注冊(cè)表文件到myfile.reg中;
●Regedit /c myfile.reg:表示把myfile.reg導(dǎo)入注冊(cè)表,相當(dāng)于用該文件的內(nèi)容覆蓋了注冊(cè)表的內(nèi)容;
●Regedit /s myfile.reg :表示把myfile.reg文件的內(nèi)容與注冊(cè)表文件的內(nèi)容進(jìn)行合并。
我們只需在注冊(cè)表中將有用的部分導(dǎo)出,而后將所要注冊(cè)的數(shù)據(jù)源的信息加入,再與系統(tǒng)注冊(cè)表合并就可以了。這個(gè)合并的過(guò)程,我們既可以手工輸入來(lái)實(shí)現(xiàn),也可以通過(guò)編程實(shí)現(xiàn)自動(dòng)合并。
注意:為了防止誤操作,一定要將系統(tǒng)注冊(cè)表作一次備份。
小 結(jié)
從安全的角度考慮,筆者首推利用在Windows控制面板中的ODBC數(shù)據(jù)源管理工具來(lái)進(jìn)行數(shù)據(jù)源注冊(cè),以免因?qū)ψ?cè)表的不熟或疏忽造成不必要的損失。當(dāng)然,還有一些應(yīng)用工具,可以實(shí)現(xiàn)對(duì)ODBC數(shù)據(jù)源的注冊(cè),用戶可以根據(jù)不同的需求選擇使用。