在C#中可以擷取DSN列表,也可以彈出ODBC資料來源管理器進行設定。
1、C#擷取機器上的DSN列表。
採用Microsoft.win32類提供的註冊表類RegistryKey和Registry,訪問系統註冊表可擷取ODBC資料服務列表。
擷取系統DSN如下:
///建立兩個RegistryKey類,一個將指向Root Path,另一個將指向子Path
RegistryKey regRootKey;
RegistryKey regSubKey;
///定義Root指向註冊表HKEY_LOCAL_MACHINE節點,
///如果是需要擷取使用者DSN則需要使用 Registry.CurrentUser;
regRootKey = Registry.LocalMachine;
///定義註冊表子Path
string strRegPath = @"SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources";
regSubKey = regRootKey.OpenSubKey(strRegPath);
string[] strDSNList = regSubKey.GetValueNames();
///關閉
regSubKey.Close();
regRootKey.Close();
2、彈出ODBC資料來源管理器
使用C#提供的Environment類可以實現。
///擷取ODBC的系統路徑
string s=System.Environment.SystemDirectory.ToString() +"\\odbcad32.exe";
///Process提供對本地和遠程進程的訪問並使您能夠啟動和停止本地系統進程。使用該類啟動ODBC對話方塊
Process myp=new Process();
myp.StartInfo.FileName=s;
myp.Start();
3、各種DSN類型的區別
DSN類型有以下三種:
使用者DSN:該資料來源只能對建立資料來源的使用者可見.
ODBC使用者資料來源存貯了如何與指定資料庫提供者串連的資訊.只對目前使用者可見,而且只能用於當前機器上.這裡的當前機器是只這個配置只對當前的機器有效,而不是說只能配置本機上的資料庫.它可以配置區域網路中另一台機器上的資料庫.
系統DSN:該資料來源對當前機器上所有的使用者可見.
ODBC系統資料來源存貯了如何指定資料庫提供者串連的資訊,系統資料對當前機器上的所有使用者都是可見的,包括NT服務.也就是說在這裡配置的資料來源,只要是這台機器的使用者都可以訪問 .
檔案DSN:該資料來源對安裝了相同驅動的使用者可見
使用者DSN只被使用者直接使用,它只能用於當前機器中,ASP不能使用它.系統DSN允許所有的使用者登陸到特定伺服器上去訪問資料庫,任何具有許可權有使用者都可以訪問系統DSN.在WEB應用程式中訪問資料庫時,通常都是建立系統DSN. 檔案DSN將資訊儲存在尾碼為.dsn的文字檔中,優點是便於移動.
使用者DSN只是針對目前使用者或者特定使用者;系統DSN是底層的,針對全部使用者。一般沒有特殊情況時,建議使用使用系統DSN,通用性好。