ODBC(開放數據庫互連):是Microsoft引進的一種早期數據庫接口技術。它實際上是ADO的前身。早期的數據庫連接是非常困難的. 每個數據庫的格式都不一樣,開發者得對他們所開發的每種數據庫的底層API有深刻的了解. 因此,能處理各種各樣數據庫的通用的API就應運而生了. 也就是現在的ODBC(Open Database Connectivity), ODBC是人們在創建通用API的早期產物. 有許多種數據庫遵從了這種標准,被稱為ODBC兼容的數據庫.
OLEDB(對象鏈接和嵌入數據庫)位於ODBC層與應用程序之間. 在你的ASP頁面里,ADO是位於OLEDB之上的"應用程序". 你的ADO調用先被送到OLEDB,然后再交由ODBC處理. 你可以直接連接到OLEDB層,如果你這么做了,你將看到服務器端游標(recordset的缺省的游標,也是最常用的游標)性能的提升.
用odbc連接數據庫:
odbc中提供三種dsn,它們的區別很簡單:用戶dsn只能用於本用戶。系統dsn和文件dsn的區別只在於連接信息的存放位置不同:系統dsn存放在odbc儲存區里,而文件dsn則放在一個文本文件中。
它們的創建方法就不說了。
在asp中使用它們時,寫法如下:
A.sql server:
用系統dsn: connstr="DSN=dsnname; UID=xx; PWD=xxx;DATABASE=dbname"
用文件dsn: connstr="FILEDSN=xx;UID=xx; PWD=xxx;DATABASE=dbname"
還可以用連接字符串(從而不用再建立dsn):
connstr="DRIVER={SQL SERVER};SERVER=servername;UID=xx;PWD=xxx"
B.access:
用系統dsn: connstr="DSN=dsnname"
(或者為:connstr="DSN=dsnname;UID=xx;PWD=xxx")
用文件dsn: connstr="FILEDSN=xx"
還可以用連接字符串(從而不用再建立dsn):
connstr="DRIVER={Microsoft Access Driver};DBQ=d:\abc\abc.mdb"
用oledb連接數據庫:
A.sql server:
connstr="PROVIDER=SQLOLEDB;
DATA SOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname"
B.access:
connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\abc\abc.mdb"
值得注意的是,OLE DB對ODBC的兼容性,允許OLE DB訪問現有的ODBC數據源。其優點很明顯,由於ODBC相對OLE DB來說使用得更為普遍,因此可以獲得的ODBC驅動程序相應地要比OLE DB的要多。這樣不一定要得到OLE DB的驅動程序,就可以立即訪問原有的數據系統。
提供者位於OLE DB層,而驅動程序位於ODBC層。如果想使用一個ODBC數據源,需要使用針對ODBC的OLE DB提供者,它會接着使用相應的ODBC驅動程序。如果不需要使用ODBC數據源,那么可以使用相應的OLE DB提供者,這些通常稱為本地提供者(native provider)。
可以清楚地看出使用ODBC提供者意味着需要一個額外的層。因此,當訪問相同的數據時,針對ODBC的OLE DB提供者可能會比本地的OLE DB提供者的速度慢一些。