OLEDB是什麼玩藝兒?

來源:互聯網
上載者:User

OLEDB? 這是什麼什麼玩藝兒? 也許你們中的許多人以前沒有聽說過. 要回答這個問題,我們先得回顧一下資料庫連接的曆史. 是英文(object linking and embedding database)的縮寫;

早期的資料庫連接是非常困難的. 每個資料庫的格式都不一樣,開發人員得對他們所開發的每種資料庫的底層API有深刻的瞭解. 因此,能處理各種各樣資料庫的通用的API就應運而生了. 也就是現在的ODBC(Open Database Connectivity), ODBC是人們在建立通用API的早期產物. 有許多種資料庫遵從了這種標準,被稱為ODBC相容的資料庫.
ODBC相容的資料庫包括Access, MS-SQL Server, Oracle, Informix等.

但ODBC並不是完美無缺的,它仍然含有大量的低級的調用,開發ODBC應用程式仍較困難. 開發人員不得不將大量的精力花在底層的資料庫通訊中,而不能專註於他們所要處理的資料. 後來微軟提出了一個解決方案: DAO(Data Access Objects). DAO的代碼看起來象這樣:

objItem.AddNew
objItem.Name = Chair
objItem.Price = 10
objItem.Update

你也許看過DAO的代碼. 後來DAO演變為RDO(Remote Data Objects, 為分散式資料庫體系設計), 再後來是ADO. 儘管它們都有各自的不足之處. 根據微軟的說法,ODBC提供了本地SQL資料的存取,DAO提供了進階的資料對象. DAO和RDO都需要資料以SQL(Structured Query Language)的格式儲存. 針對這些缺陷,微軟提出了OLEDB,一個基於COM的資料存放區對象,能提供對所有類型的資料的操作,甚至能在離線的情況下存取資料(比方說,你使用的是你的便攜機,你可以毫不費力地看到最後一次資料同步時的資料映像).

OLEDB位於ODBC層與應用程式之間. 在你的ASP頁面裡,ADO是位於OLEDB之上的應用程式. 你的ADO調用先被送到OLEDB,然後再交由ODBC處理. 你可以直接連接到OLEDB層,如果你這麼做了,你將看到伺服器端遊標(recordset的預設的遊標,也是最常用的遊標)效能的提升. 那我們該如何直接連接到OLEDB呢?

要想直接連到OLEDB層,你必須改變你的connection對象連接字串. 先用老辦法建立一個connectiong對象:

Dim objConn
Set objConn = Server.CreateObject(ADODB.Connection)

接下去,我們不用常規的類似DSN=pubs or DRIVER={MS SQL-
Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine的連接字串,而採用下面的連接字串:

objConn.ConnectionString = Provider=ProviderName; Data
Source=DatabaseSource; Initial Catalog=DatabaseName; User ID=UserID;
Password=Password

對於SQL:
ProviderName = SQLOLEDB
Data Source = Server Name
Initial Catalog = Database Name

對於Access:
ProviderName = Microsoft.Jet.OLEDB.3.51
Data Source = Full path to .MDB file

下面讓我們來看兩個例子,一個是針對Access的,還有一個是針對SQL的. 如果你的串連SQL的DSN-less串連串是這樣的:

DRIVER={MS SQL-Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine

那麼直接連接到OLEDB的連接字串應該是這樣的:

Provider=SQLOLEDB; Data Source=myMachine; Initial Catalog=pubs; User
ID=sa; Password=

讓我們來看看Access,如果你的Access的連接字串是:

DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:\inetpub\wwwroot\users.mdb

那麼直接連接到OLEDB的連接字串應該是這樣的:

Provider=Microsoft.Jet.OLEDB.3.51; Data
Source=c:\inetpub\wwwroot\users.mdb

就是這麼簡單,挺棒的吧?

這很重要嗎?
現在你也許對為什麼要學習這種新的資料庫連接方法感到有些兒迷惑,為什麼不走標準的DSN-less/System DSN路子呢? 讓我來告訴你為什麼. 據Wrox出的ADO 2.0
Programmer's Reference一書中的測試,用OLEDB串連而不是DSN或DSN-less的串連會得到的效能提升如下:

效能比較
SQL Access
OLEDB DSN                                                                     OLEDB DSN
Connection Times: 18 82                                                 Connection Times: 62 99
Iterating through 1,000 Records Times: 2900 5400   Iterating through 1,000 Records Times: 100 950  

 

源地址: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1477560

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.