這篇文章將為大家詳細(xì)講解有關(guān)OLEDB和ODBC的區(qū)別是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了壽縣免費(fèi)建站歡迎大家使用!
1.單束式驅(qū)動(dòng)程序
單束式驅(qū)動(dòng)程序介于應(yīng)用程序和數(shù)據(jù)庫之間,像中介驅(qū)動(dòng)程序一樣數(shù)據(jù)提供一個(gè)統(tǒng)一的數(shù)據(jù)訪問方式。當(dāng)用戶進(jìn)行數(shù)據(jù)庫操作時(shí),應(yīng)用程序傳遞一個(gè)ODBC 函數(shù)調(diào)用給ODBC 驅(qū)動(dòng)程序管理器,由ODBC API 判斷該調(diào)用是由它直接處理并將結(jié)果返回還是送交驅(qū)動(dòng)程序執(zhí)行并將結(jié)果返回。由上可見,單束式驅(qū)動(dòng)程序本身是一個(gè)數(shù)據(jù)庫引擎,由它直接可完成對(duì)數(shù)據(jù)庫的操作,盡管該數(shù)據(jù)庫可能位于網(wǎng)絡(luò)的任何地方。
2.多束式驅(qū)動(dòng)程序
多束式驅(qū)動(dòng)程序負(fù)責(zé)在數(shù)據(jù)庫引擎和客戶應(yīng)用程序之間傳送命令和數(shù)據(jù),它本身并不執(zhí)行數(shù)據(jù)處理操作而用于遠(yuǎn)程操作的網(wǎng)絡(luò)通信協(xié)議的一個(gè)界面。前端應(yīng)用程序提出對(duì)數(shù)據(jù)庫處理的請(qǐng)求,該請(qǐng)求轉(zhuǎn)給ODBC 驅(qū)動(dòng)程序管理器,驅(qū)動(dòng)程序管理器依據(jù)請(qǐng)求的情況,就地完成或傳給多束驅(qū)動(dòng)程序,多束式驅(qū)動(dòng)程序?qū)⒄?qǐng)求翻譯為特定廠家的數(shù)據(jù)庫通信接口(如Oracle 的SQLNet)所能理解的形式并交于接口去處理,接口把請(qǐng)求經(jīng)網(wǎng)絡(luò)傳送給服務(wù)器上的數(shù)據(jù)引擎,服務(wù)器處理完后把結(jié)果發(fā)回給數(shù)據(jù)庫通信接口,數(shù)據(jù)庫接口將結(jié)果傳給多束式ODBC 驅(qū)動(dòng)程序,再由驅(qū)動(dòng)程序?qū)⒔Y(jié)果傳給應(yīng)用程序。
ODBC(開放數(shù)據(jù)庫互連):是Microsoft引進(jìn)的一種早期數(shù)據(jù)庫接口技術(shù)。它實(shí)際上是ADO的前身。早期的數(shù)據(jù)庫連接是非常困難的. 每個(gè)數(shù)據(jù)庫的格式都不一樣,開發(fā)者得對(duì)他們所開發(fā)的每種數(shù)據(jù)庫的底層API有深刻的了解. 因此,能處理各種各樣數(shù)據(jù)庫的通用的API就應(yīng)運(yùn)而生了. 也就是現(xiàn)在的ODBC(Open Database Connectivity), ODBC是人們?cè)趧?chuàng)建通用API的早期產(chǎn)物. 有許多種數(shù)據(jù)庫遵從了這種標(biāo)準(zhǔn),被稱為ODBC兼容的數(shù)據(jù)庫.
OLEDB(對(duì)象鏈接和嵌入數(shù)據(jù)庫)位于ODBC層與應(yīng)用程序之間. 在你的ASP頁面里,ADO是位于OLEDB之上的"應(yīng)用程序". 你的ADO調(diào)用先被送到OLEDB,然后再交由ODBC處理. 你可以直接連接到OLEDB層,如果你這么做了,你將看到服務(wù)器端游標(biāo)(recordset的缺省的游標(biāo),也是最常用的游標(biāo))性能的提升.
參考 http://www.connectionstrings.com/
用odbc連接數(shù)據(jù)庫:
odbc中提供三種dsn,它們的區(qū)別很簡單:用戶dsn只能用于本用戶。系統(tǒng)dsn和文件dsn的區(qū)別只在于連接信息的存放位置不同:系統(tǒng)dsn存放在odbc儲(chǔ)存區(qū)里,而文件dsn則放在一個(gè)文本文件中。
它們的創(chuàng)建方法就不說了。
在asp中使用它們時(shí),寫法如下:
1.sql server:
用系統(tǒng)dsn: connstr="DSN=dsnname; UID=xx; PWD=xxx;DATABASE=dbname"
用文件dsn:connstr="FILEDSN=xx;UID=xx; PWD=xxx;DATABASE=dbname"
還可以用連接字符串(從而不用再建立dsn):
connstr="DRIVER={SQLSERVER};SERVER=servername;UID=xx;PWD=xxx"
2.access:
用系統(tǒng)dsn: connstr="DSN=dsnname"
(或者為:connstr="DSN=dsnname;UID=xx;PWD=xxx")
用文件dsn:connstr="FILEDSN=xx"
還可以用連接字符串(從而不用再建立dsn):
connstr="DRIVER={MicrosoftAccess Driver};DBQ=d:\abc\abc.mdb"
用oledb連接數(shù)據(jù)庫:
1.sql server:
connstr="PROVIDER=SQLOLEDB;
DATASOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname"
2.access:
connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0;
DATASOURCE=c:\abc\abc.mdb"
值得注意的是,OLE DB對(duì)ODBC的兼容性,允許OLE DB訪問現(xiàn)有的ODBC數(shù)據(jù)源。其優(yōu)點(diǎn)很明顯,由于ODBC相對(duì)OLE DB來說使用得更為普遍,因此可以獲得的ODBC驅(qū)動(dòng)程序相應(yīng)地要比OLE DB的要多。這樣不一定要得到OLE DB的驅(qū)動(dòng)程序,就可以立即訪問原有的數(shù)據(jù)系統(tǒng)。
提供者位于OLE DB層,而驅(qū)動(dòng)程序位于ODBC層。如果想使用一個(gè)ODBC數(shù)據(jù)源,需要使用針對(duì)ODBC的OLE DB提供者,它會(huì)接著使用相應(yīng)的ODBC驅(qū)動(dòng)程序。如果不需要使用ODBC數(shù)據(jù)源,那么可以使用相應(yīng)的OLE DB提供者,這些通常稱為本地提供者(native provider)。
可以清楚地看出使用ODBC提供者意味著需要一個(gè)額外的層。因此,當(dāng)訪問相同的數(shù)據(jù)時(shí),針對(duì)ODBC的OLE DB提供者可能會(huì)比本地的OLEDB提供者的速度慢一些。
ODBC,OLEDB連接字符串詳解
SQL Server
u ODBC
1. Standard Security:
"Driver={SQLServer};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;"
2. Trusted connection:
"Driver={SQLServer};Server=Aron1;Database=pubs;Trusted_Connection=yes;"
3. Prompt for username and password:
oConn.Properties("Prompt")= adPromptAlways
oConn.Open"Driver={SQL Server};Server=Aron1;DataBase=pubs;"
u OLE DB, OleDbConnection (.NET)
1. Standard Security:
"Provider=sqloledb;DataSource=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
2. Trusted Connection:
"Provider=sqloledb;DataSource=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
(useserverName\instanceName as Data Source to use an specifik SQLServer instance,only SQLServer2000)
3. Prompt for username and password:
oConn.Provider= "sqloledb"
oConn.Properties("Prompt")= adPromptAlways
oConn.Open"Data Source=Aron1;Initial Catalog=pubs;"
4. Connect via an IP address:
"Provider=sqloledb;DataSource=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;UserID=sa;Password=asdasd;"
(DBMSSOCN=TCP/IPinstead of Named Pipes, at the end of the Data Source is the port to use (1433is the default))
u SqlConnection (.NET)
1. Standard Security:
"DataSource=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
- or -
"Server=Aron1;Database=pubs;UserID=sa;Password=asdasd;Trusted_Connection=False"
(bothconnection strings produces the same result)
2. Trusted Connection:
"DataSource=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
- or -
"Server=Aron1;Database=pubs;Trusted_Connection=True;"
(bothconnection strings produces the same result)
(useserverName\instanceName as Data Source to use an specifik SQLServer instance,only SQLServer2000)
3. Connect via an IP address:
"DataSource=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;UserID=sa;Password=asdasd;"
(DBMSSOCN=TCP/IPinstead of Named Pipes, at the end of the Data Source is the port to use (1433is the default))
關(guān)于OLEDB和ODBC的區(qū)別是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。