VB与数据库连接
vb與數(shù)據(jù)庫結(jié)合過程
? ? ?相信小伙伴們?cè)谇猛炅恕?span style="font-size:18px">學(xué)生管理系統(tǒng)”后,會(huì)留有一個(gè)問題(標(biāo)題),這里我們來淺談一下這個(gè)過程,而非內(nèi)部結(jié)構(gòu)中的復(fù)雜程度,我相信了解這些后我們可以理解的更加深刻。
? ? ?首先我們?cè)趯W(xué)習(xí)完VB課本后肯定了解有四種連接數(shù)據(jù)庫的方式(data 控件、DAO對(duì)象、ADO data控件、ADO對(duì)象),其中的差別和聯(lián)系這里就不一一介紹了,然后后面我們通過紅皮書又了解到了OLE DB(更加底層的接口---宏觀講把它封裝好就是ADO)和ODBC,這又是什么鬼?最終引出學(xué)生管理系統(tǒng)這個(gè)項(xiàng)目。終于將前面講到的知識(shí)都用到了;一幅導(dǎo)圖相信你會(huì)理解的更加透徹。
? ? 首先說說OLE DB和ODBC接下的不解之緣吧。
? ? ? ? 1:OLE DB針對(duì)的對(duì)象更加廣泛-任何數(shù)據(jù)存儲(chǔ)而ODBC僅僅是針對(duì)基于SQL的數(shù)據(jù)源的。
? ? ? ? 2:但是由于ODBC使用的更加廣泛,因此OLE DB獲得的驅(qū)動(dòng)程序相對(duì)比較少,但是確兼容訪問ODBC的數(shù)據(jù)源
? ? 綜上所述:ODBC相對(duì)來說是OLE DB的一個(gè)數(shù)據(jù)存儲(chǔ)的一個(gè)子集,不僅僅需要符合ODBC的標(biāo)準(zhǔn)還需要符合OLE DB 的標(biāo)準(zhǔn)(service provider),類似于-SQL server的ODBC驅(qū)動(dòng)程序一樣;只不過現(xiàn)在OLE DB 提供了一組統(tǒng)一的OLE DB服務(wù)程序(ODBC OLE DB provider),并且用來替代ODBC驅(qū)動(dòng)程序管理器,并不會(huì)造成這個(gè)新型接口在ODBC 驅(qū)動(dòng)程序之上的層次,從而造成問題。
? ? ?再來一幅導(dǎo)圖帶我們來看看VB和SQL server究竟是如何連接的!-數(shù)據(jù)庫系統(tǒng)原理
? ? ?不知道您看了這幅圖片了解的怎么樣了呢?肯定還是不知道上述兩幅圖中含義吧,辣么下面來聊聊其中的含義。
ADO(activex data object)
? ? ? ADO是一個(gè)面向?qū)ο蟮?/span>COM組件庫(分為有源數(shù)據(jù)庫和無源數(shù)據(jù)庫),用ADO訪問數(shù)據(jù)庫,其實(shí)就是利用ADO中三個(gè)獨(dú)立對(duì)象來操作數(shù)據(jù)庫中的數(shù)據(jù):分別為connection(指定數(shù)據(jù)源來源)、recordset(面向查詢的結(jié)果(記錄集,修改當(dāng)前記錄的位置來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問))、command(定義了一個(gè)可以在數(shù)據(jù)源上執(zhí)行的命令或查詢)
? ? ?三者配合的過程:首先通過發(fā)送設(shè)置鏈接的服務(wù)器同數(shù)據(jù)庫的連接,連接后通過發(fā)送一個(gè)查詢指令到服務(wù)器上面,最后數(shù)據(jù)庫服務(wù)器執(zhí)行查詢,把查詢到的數(shù)據(jù)存儲(chǔ)到recordset,然后返回給對(duì)象
ODBC(open data base connectivity)
? ? ODBC(ADO的前身),服務(wù)結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API(application program interface)。大部分SQL語句通過這個(gè)API接口來使得對(duì)ODBC的訪問
? ? ? 創(chuàng)造原因:
? ? ?早期的數(shù)據(jù)庫連接是非常困難的.每個(gè)數(shù)據(jù)庫的格式都不一樣,開發(fā)者得對(duì)他們所開發(fā)的每種數(shù)據(jù)庫的底層API有深刻的了解.?因此,能處理各種各樣數(shù)據(jù)庫的通用的API就應(yīng)運(yùn)而生了.也就是現(xiàn)在的ODBC。
? ? ? ?1:軟件只能伴隨數(shù)據(jù)庫系統(tǒng)的版本而創(chuàng)造
? ? ? ?2:統(tǒng)一軟件不兼容不同的數(shù)據(jù)庫類型
?類型:
用戶dsn只能用于本用戶;系統(tǒng)dsn(本地所有用戶可以操作)和文件dsn(實(shí)現(xiàn)異地登錄操作?)的區(qū)別只在于連接信息的存放位置不同---系統(tǒng)dsn存放在odbc儲(chǔ)存區(qū)里,而文件dsn則放在一個(gè)文本文件中。
執(zhí)行過程:
它通過使用相應(yīng)應(yīng)用平臺(tái)上和所需數(shù)據(jù)庫對(duì)應(yīng)的驅(qū)動(dòng)程序與應(yīng)用程序的交互來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的操作,避免了在應(yīng)用程序中直接調(diào)用與數(shù)據(jù)庫相關(guān)的操作,從而提供了數(shù)據(jù)庫的獨(dú)立性
DAO(Data?Access?Object?)?
? ? 即數(shù)據(jù)訪問對(duì)象集,是Microsoft提供的基于一個(gè)數(shù)據(jù)庫對(duì)象集合的訪問技術(shù)。和ODBC一樣,他們都是Windows?API的一部分,可以獨(dú)立于(DBMS)進(jìn)行數(shù)據(jù)庫的訪問。因?yàn)?/strong>DAO繞過中間的環(huán)節(jié),直接通過數(shù)據(jù)庫引擎(Microsoft jet database engine)完成對(duì)各種對(duì)象的操作,所以其執(zhí)行速度較快。
總結(jié)
- 上一篇: Web前端:11个让你代码整洁的原则
- 下一篇: mysql 存取字符集_MySQL字符集