利用VB.NET來讀取ODBC數(shù)據(jù)源名

字號:

在論壇中有人提出關(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