台灣最大程式設計社群網站
線上人數
1451
 
會員總數:246133
討論主題:189712
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> ADO跟ODBC之間的關係
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ADO跟ODBC之間的關係
價值 : 0 QP  點閱數:1733 回應數:0
樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
OLE DB:

是利用ADO透過ODBC連資料庫

ODBC:

是直接ADO連資料庫


回應者: LetGo ron0215@iris.seed.net.tw

ADO : ActiveX Data Object, ADO 是為 Microsoft最新和最強大的資料存取範例 OLE DB 而設計的,是一個便於使用的應用程式層介面。

ODBC : Open Database Connectivity (ODBC)(開放資料庫連結協定 (ODBC))

用於資料庫伺服器的一種標準通訊協定。可以安裝多種資料庫的 ODBC 驅動程式,從而使應用程式能夠與該資料庫相連,存取函數庫中的資料。

圖解:

a.應用程式利用 ADO 物件,透過 OLE DB Provider 連結資料庫

Application --> ADO -----------------------> Database

OLE DB Provider

b.應用程式還是利用 ADO 物件,但是透過 ODBC 連結資料庫

Application --> ADO ------> ODBC ------------> Database

DSN OLE DB Provider

由圖解就可以看得出來,ODBC 像是應用程式與資料庫溝通的一個統一介面,利用 OLE DB Provider 連結資料庫時,因為不需要透過 ODBC 的轉換,指令處理速度會比較快,但是市面上的資料庫引擎這麼多,為了使用某一種資料庫,你可能得特別去了解該設定哪些參數,才能夠連結到資料庫;而透過 ODBC,你只需要了解該如何跟 ODBC 溝通,其餘的部分自然 ODBC 會去處理。

簡單判別你的 ADO 物件是以 OLE DB Provider 或 ODBC 連結資料庫的方法,就是看一下你是不是必須先在 ODBC 裡面建立 DSN(資料來源名稱),才能連結資料庫;當然啦,ADODB.Connection 物件裡 ConnectionString 的指定方式有很多種,上述的判別方式只能算是部分正確,舉例來說:

a.使用 OLE DB Provider 來連結 MS SQL ,其 ConenctionString 如下:

cnstring = "Provider=SQLOLEDB;Persist Security Info=true;" & _

"User ID=使用者名稱;Password=登入密碼;" & _

"Initial Catalog=資料庫名稱;Data Source=資料庫伺服器名稱"


b.利用 ODBC,並建立 DSN 來連結資料庫,其 ConenctionString 如下:

cnstring = "DSN=資料來源名稱;UID=使用者名稱;PWD=登入密碼"


c.利用 ODBC,但是無須建立 DSN,其 ConenctionString 如下:

cnstring = "Driver={SQL Server};" & _

"Server=資料庫伺服器名稱;Database=資料庫名稱" & _

"Uid=使用者名稱;Pwd=登入密碼;"


以下例來說,這是利用 Jet OLE DB Provider 來連結 Access 資料庫

Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "&Server.MapPath("AAA.MDB")

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

回應者: diabo p5@pchome.com.tw

簡單的說ADO連資料庫只有DSN或DSN LESS

採用DSN的話,你可以透過ODBC的精靈,經過對話框的操作幫你完成連線字串的設定,就不必手動輸入還可即時知道是否可以正確連上資料庫。

採用DSN LESS的話,就必須自己動手輸入完整的連線字串(Provider=.....)

差別就是這樣,連線過程完全相同。一般如果是自有Server會採用DSN(有權限可以去建),如果是免費申請的網頁空間,就只能採用DSN LESS。


本篇文章發表於2002-04-15 00:00
目前尚無任何回覆
   

回覆
如要回應,請先登入.