如何由程式中去新增 ODBC 資料來源

如何由程式中去新增 ODBC 資料來源

如何由程式中去新增 ODBC 資料來源

ODBC ( Open Database Connectivity ) 為 開放式的資料連結介面

早期是資料庫連結的標準,應用的技術有ODBC API、ODBC Direct ..

或是使用 資料庫物件 透過ODBC Driver 去進行資料庫的存取。

而後,M$ 推OLEDB ,資料庫物件也由 ADO 進化到 ADO.Net。

但不變的是,從文字檔 txt、csv、html,試算表xls、wks,到檔案型的DB,

XBase 的 DBF、Access 的 MDB等,甚至是 SQL Server , Oracle 等

中大型的DBMS、RDBMS,各廠商依舊提供了該資料庫系統的原廠 ODBC 驅動程式。

也因此,時至今日,ODBC 依舊被廣泛的使用。

而底下將介紹 如何由程式中去進增一個 MDB 的 ODBC 資料來源

其他資料庫原理亦相同,依樣畫葫蘆即可。

<< VB.Net 寫法 >>

' 宣告變數

Dim Para(11), DSN, Driver As String

' 設定ODBC DSN 參數內容

Para(0) = "UID=admin"

Para(1) = "Database=C:\db1.mdb"

Para(2) = "UserCommitSync=Yes"

Para(3) = "Threads=3"

Para(4) = "SafeTransactions=0"

Para(5) = "PageTimeout=5"

Para(6) = "MaxScanRows=8"

Para(7) = "MaxBufferSize=2048"

Para(8) = "FIL=MS Access"

Para(9) = "DriverId=25"

Para(10) = "DefaultDir=C:\"

Para(11) = "DBQ=C:\db1.mdb"

' 使用者資料來源名稱

DSN = "MyDataSourceName"

' 驅動程式

Driver = "Microsoft Access Driver (*.mdb)"

' 建立DAO.DBEngine 物件 , 透過RegisterDatabase 方法新增一個ODBC 設定

CreateObject("DAO.DBEngine.36").RegisterDatabase(DSN, Driver, True, Join(Para, Chr(0)))

' DAO 物件: Microsoft DAO 3.6 Object Library ( dao360.dll )

================================================================

<< C# 寫法 >>

// Activator 成員: 包含本機或遠端建立物件型別的方法,或者取得對現有遠端物件的參考。

// Activator.CreateInstance 方法(Type) : 使用最符合指定參數的建構函式,建立指定型別的執行個體。

object dbe = Activator.CreateInstance(Type.GetTypeFromProgID("DAO.DBEngine.36"));

// Type.GetTypeFromProgID 方法: 取得與指定的程式識別項(ProgID) 關聯的型別;

// 如果在載入Type 時發生錯誤,則傳回null。

// DAO.DBEngine.36 為Microsoft DAO 3.6 Object Library ( dao360.dll )

// 宣告變數

string[] strPara = new string[13];

string strDSN;

string strDriver;

// 設定ODBC DSN 參數內容

strPara[1] = "UID=admin";

strPara[2] = "Database=C:\\db1.mdb";

strPara[3] = "UserCommitSync=Yes";

strPara[4] = "Threads=3";

strPara[5] = "SafeTransactions=0";

strPara[6] = "PageTimeout=5";

strPara[7] = "MaxScanRows=8";

strPara[8] = "MaxBufferSize=2048";

strPara[9] = "FIL=MS Access";

strPara[10] = "DriverId=25";

strPara[11] = "DefaultDir=C:\\";

strPara[12] = "DBQ=C:\\db1.mdb";

// 使用者資料來源名稱

strDSN = "MyDataSourceName";

// 驅動程式

strDriver = "Microsoft Access Driver (*.mdb)";

object[] p = new object[] { strDSN, strDriver, true, string.Join('\0'.ToString(), strPara, 1, 12) };

// Type.InvokeMember 方法

// Type.InvokeMember (String, BindingFlags, Binder, Object, Object[])

dbe.GetType().InvokeMember("RegisterDatabase", BindingFlags.InvokeMethod, null, dbe, p);

// 透過DAO.DBEngine 物件的RegisterDatabase 方法新增一個ODBC 設定