一
手工配置
.ODBC數據源管理器
在進行數據庫開發時
為了達到配置ODBC
進行DSN定義注冊的目的
微軟給出了一個手工操作的解決方法
在Windows
X操作系統的控制面板中
有一個名為
ODBC數據源(
位)
的圖標
可以通過它激活專門為用戶設置ODBC環境的程序(ODBC Data Source Administrator
ODBC數據源管理器)
在Windows
操作系統中
上述圖標被放置在控制面板的
管理工具
裡面
這個用於設置ODBC環境的程序叫做桌面驅動程序
它支持數種DBMS(Database Management System
數據庫管理系統)
當用戶想增加一個數據源和一個所需要的驅動程序時
可以通過ODBC數據源管理器的配置對話框配置特定類型的數據庫
大多數情況下
在編寫對數據庫操作的程序時
我們至少需要知道諸如數據庫文件名
系統(本地或遠程)
文件夾等信息
同時要給數據源命名
.定義數據源的類型
用戶可以定義以下三種類型的數據源
●用戶數據源
作為位於計算機本地的用戶數據源而創建的
並且只能被創建這個數據源的用戶所使用
●系統數據源
作為屬於計算機或系統而不是特定用戶的系統數據源而創建的
用戶必須有訪問權才能使用
●文件數據源
指定到文件中作為文件數據源而定義的
任何已經正確地安裝了驅動程序的用戶皆可以使用這種數據源
.數據源注冊的步驟
以Microsoft Access為例
如果在C:\myfile\文件夾裡創建了一個名為myexample
mdb的數據庫文件
其注冊步驟如下
●在控制面板裡找到
ODBC數據源
圖標
打開數據源管理器的交互界面
●筆者創建的數據庫文件是供本機上的用戶使用的
所以這裡選擇
用戶 DSN
●然後按下
添加
按鈕
在彈出的數據源管理器對話框裡
為自己所要創建的數據源選擇一個驅動程序
本文的數據庫文件是用Microsoft Access創建的
所以要選擇
Microsoft Access Driver (*
mdb)
●按
完成
按鈕後
進入一個標題為
ODBC Microsoft Access 安裝
的界面
在其中設置
數據源名
為
mydatasource
選取數據庫文件
C:\myfile\myexample
mdb
然後確定即可
這樣我們就完成了一個簡單的ODBC數據源的注冊
當然
在以上的步驟中
用戶可以根據自己的不同需要
設置不同的選項
注冊結束後
我們便可以在對數據庫的編程中
操作該數據庫了
二
在VB中注冊數據源
在VB中對數據庫進行編程時
可以利用RegisterDataSource方法為ODBC數據源輸入連接信息到 Windows 注冊表中
它的語法是
RegisterDataSource DSN
driver
silent
attributes
其中參數代表的含義分別為
●DSN
字符串表達式
它是在引用數據源描述信息塊時所使用的名字
例如
如果數據源是一個ODBC遠程數據庫
這就是服務器的名字
如果是用戶DSN
則是注冊的數據源的名字
●drive
字符串表達式
表示ODBC驅動程序的名稱
它並不是 ODBC 驅動程序動態連接庫 (DLL) 文件名
例如
SQL Server 是驅動程序名
而 SQLSRVR
DLL 是 DLL 文件名
必須安裝ODBC 及相應的驅動程序
●silent
布爾類型值
如果不想顯示 ODBC 驅動程序對話框
用以提示指定驅動程序的信息
該值就為 True
如果希望顯示 ODBC 驅動程序對話框
該值就為 False
如果 silent 為 True
那麼attributes必須包含所有必需的指定驅動程序的信息
●attributes
字符串表達式
它是一個要添加到 ODBC
INI 文件中的關鍵字列表
編寫程序時
可以根據需要選擇若干attributes的參數進行設置
例如
我們可以編寫如下的VB程序
達到與上面手工注冊一樣的目的
程序清單如下
Sub RegisterDataSource()
Dim strAttribs As String
建造關鍵字字符串
C:\myfile\myexample
l
mdb數據庫文件名(包含路徑)
strAttribs =
DBQ=
_
&
C:\myfile\myexample
mdb
_
& Chr$(
) &
OemToAnsi=No
_
& Chr$(
) &
SERVER=SEQUEL
_
& Chr$(
) &
Network=DBNMPNTW
_
& Chr$(
) &
Database=WorkDB
_
& Chr$(
) &
Address=\\SEQUEL\PIPE\SQL\QUERY
建立新的注冊的 DSN
rdoEngine
rdoRegisterDataSource
mydatasource
Microsoft Access Driver (*
mdb)
True
strAttribs
End Sub
Private Sub Form_Load()
Call rdoRegisterDataSource
End Sub
注意
為了在代碼中使用rdoEngine和遠程數據對象
必須先在
引用
對話框中設置一個到 Microsoft Remote Data Object
對象庫的引用
否則在第一次引用rdoEngine 對象時會導致編譯錯誤
三
利用注冊表合並
.解決思路
考查ODBC數據源注冊後對Windows注冊表的修改情況
我們可以發現所注冊的數據源對Windows注冊表的影響關鍵集中在[HKEY_CURRENT_USER\Software\ODBC\ODBC
INI]裡
這樣
我們導出[HKEY_CURRENT_USER\Software\ODBC\ODBC
INI]
每次以之為模板
把所要注冊的數據源信息加入到注冊表導出文件的對應位置
然後再將該文件與系統注冊表合並即可
.具體操作
首先
我們要弄清楚Regedit 及其參數的含義
Regedit是打開系統注冊表的命令
在
開始\運行\
中輸入即可
它的三個參數含義如下
●Regedit /e myfile
reg
表示把注冊表文件導出到myfile
reg 文件中
相當於復制整個注冊表文件到myfile
reg中
●Regedit /c myfile
reg
表示把myfile
reg導入注冊表
相當於用該文件的內容覆蓋了注冊表的內容
●Regedit /s myfile
reg
表示把myfile
reg文件的內容與注冊表文件的內容進行合並
我們只需在注冊表中將有用的部分導出
而後將所要注冊的數據源的信息加入
再與系統注冊表合並就可以了
這個合並的過程
我們既可以手工輸入來實現
也可以通過編程實現自動合並
注意
為了防止誤操作
一定要將系統注冊表作一次備份
小 結
從安全的角度考慮
筆者首推利用在Windows控制面板中的ODBC數據源管理工具來進行數據源注冊
以免因對注冊表的不熟或疏忽造成不必要的損失
當然
還有一些應用工具
可以實現對ODBC數據源的注冊
用戶可以根據不同的需求選擇使用
From:http://tw.wingwit.com/Article/Common/201311/5105.html