2009年11月26日 星期四

問題:
時機:使用者可能回自行要連接資料庫,但是ConnectionString太複雜不好撰寫
方法:事實上微軟已經把這個對話盒包裝起來,
包含:
1.建立ConnectionString
2.開啟*.udl檔案,讀入ConnectionString
3.寫入*.udl檔案,用已知的ConnectionString,幫你產生*.udl檔案

答案:
實做
1. 先加入參考->COM
C:\Program Files\Common Files\System\OLE DB\oledb32.dll

說明:這個檔案oledb32.dll,就是幫我們操作ConnectionString的物件,事實上早已存在(舊的OleDB物件),並不是.NET物件,之後VS.NET會幫我們產生一個For.NET的檔案,這是用來呼叫oledb32的.NET DLL檔


2. 再加入參考->.NET
adodb (C:\Program Files\Microsoft.NET\Primary Interop Assemblies\adodb.dll)
說明:因為oledb32是要利用ADO Object(不能利用ADO.net)來承接所產生出來的ConnectionString,所以我們必須要建立ADO物件
程式:
///
/// 啟動ConnectionString對話盒
///

/// 預設的ConnectionString
/// 回傳ConnectionString
public string OpenConnectionStringDialog(string vDefaultConnectionString)
{
MSDASC.DataLinksClass DataLinkObj = new MSDASC.DataLinksClass();
ADODB.ConnectionClass ConnObj = new ADODB.ConnectionClass();
ConnObj.ConnectionString = vDefaultConnectionString;
object TempConnObj = (object)ConnObj;
DataLinkObj.PromptEdit(ref TempConnObj);
return ConnObj.ConnectionString;
}

3. 說明:會傳入一個預設的ConnectionString可預帶之前的設定
備註:發布時一定要把oledb32.dll和Interop.MSDASC.dll一起發布給Client端

沒有留言:

張貼留言