在論壇中有人提出關(guān)于如何在.net中讀取ODBC數(shù)據(jù)源名的問題,不幸的是,在.NET Framework的類庫中沒有提供任何類或方法來實現(xiàn)它。然而,這有個簡單的方法可以為它得到答案。
事實上,所有的ODBC數(shù)據(jù)源名都存放在Windows系統(tǒng)的注冊表中。如果你知道注冊表中正確的項值,你就可以通過.NET Framework類庫提供的注冊表類來讀取該項值下的所有DSN列表。
所有ODBC數(shù)據(jù)源名都存放在Windows注冊表下的:LocalMachine\ODBC\ODBC.INI\ODBC Data Sources(系統(tǒng)DSN)和CurrentUser\Software\ODBC\ODBC.INI\ODBC Data Sources(用戶DSN) 鍵值中。
Imports Microsoft.Win32 '引用名字空間
下面的源代碼是演示讀取ODBC DSN列表內(nèi)容并加入到ListBox控件中。來測試這段代碼,建立一個Windows 應(yīng)用程式,添加一個ListBox控件到窗體表單中,并將ReadODBCDSNs方法加到程式代碼中。然后,可用一個命令按鈕的單或雙擊事件或用窗體的導(dǎo)入事件來引用這個方法。
Private Sub ReadODBCSNs()
Dim str As String
Dim rootKey As ReGIStryKey, subKey As RegistryKey
Dim dsnList() As String
rootKey = Registry.LocalMachine
str = "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources"
subKey = rootKey.OpenSubKey(str)
dsnList = subKey.GetValueNames()
ListBox1.Items.Add("System DSNs")
ListBox1.Items.Add("================")
Dim dsnName As String
For Each dsnName In dsnList
ListBox1.Items.Add(dsnName)
Next
subKey.Close()
rootKey.Close()
'Load User DSNs
rootKey = Registry.CurrentUser
str = "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources"
subKey = rootKey.OpenSubKey(str)
dsnList = subKey.GetValueNames()
ListBox1.Items.Add("================")
ListBox1.Items.Add("UserDSNs")
ListBox1.Items.Add("================")
For Each dsnName In dsnList
ListBox1.Items.Add(dsnName)
Next
subKey.Close()
rootKey.Close()
End Sub
事實上,所有的ODBC數(shù)據(jù)源名都存放在Windows系統(tǒng)的注冊表中。如果你知道注冊表中正確的項值,你就可以通過.NET Framework類庫提供的注冊表類來讀取該項值下的所有DSN列表。
所有ODBC數(shù)據(jù)源名都存放在Windows注冊表下的:LocalMachine\ODBC\ODBC.INI\ODBC Data Sources(系統(tǒng)DSN)和CurrentUser\Software\ODBC\ODBC.INI\ODBC Data Sources(用戶DSN) 鍵值中。
Imports Microsoft.Win32 '引用名字空間
下面的源代碼是演示讀取ODBC DSN列表內(nèi)容并加入到ListBox控件中。來測試這段代碼,建立一個Windows 應(yīng)用程式,添加一個ListBox控件到窗體表單中,并將ReadODBCDSNs方法加到程式代碼中。然后,可用一個命令按鈕的單或雙擊事件或用窗體的導(dǎo)入事件來引用這個方法。
Private Sub ReadODBCSNs()
Dim str As String
Dim rootKey As ReGIStryKey, subKey As RegistryKey
Dim dsnList() As String
rootKey = Registry.LocalMachine
str = "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources"
subKey = rootKey.OpenSubKey(str)
dsnList = subKey.GetValueNames()
ListBox1.Items.Add("System DSNs")
ListBox1.Items.Add("================")
Dim dsnName As String
For Each dsnName In dsnList
ListBox1.Items.Add(dsnName)
Next
subKey.Close()
rootKey.Close()
'Load User DSNs
rootKey = Registry.CurrentUser
str = "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources"
subKey = rootKey.OpenSubKey(str)
dsnList = subKey.GetValueNames()
ListBox1.Items.Add("================")
ListBox1.Items.Add("UserDSNs")
ListBox1.Items.Add("================")
For Each dsnName In dsnList
ListBox1.Items.Add(dsnName)
Next
subKey.Close()
rootKey.Close()
End Sub

