




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、應(yīng)用程序訪問數(shù)據(jù)庫(kù)技術(shù)1. 應(yīng)用程序訪問數(shù)據(jù)庫(kù)技術(shù)概述應(yīng)用程序必須通過DBMS來(lái)訪問數(shù)據(jù)庫(kù)中的數(shù)據(jù),DBMS要向應(yīng)用程序提供一個(gè)訪問接口(API,一組函數(shù)),應(yīng)用程序通過調(diào)用它們來(lái)訪問數(shù)據(jù)庫(kù)。如圖所示:數(shù)據(jù)庫(kù)APIDBMS應(yīng)用程序 由于不同廠家開發(fā)DBMS的API各不相同,這給程序員帶來(lái)很多麻煩,要編寫基于某個(gè)廠家DBMS的應(yīng)用程序,就必須學(xué)習(xí)、掌握該DBMS的API。1.1 ODBCODBC是開放數(shù)據(jù)庫(kù)互聯(lián)(Open DataBase Connectivity)的縮寫,它是由Microsoft公司聯(lián)合一些數(shù)據(jù)庫(kù)廠商共同推出的一個(gè)應(yīng)用程序訪問數(shù)據(jù)庫(kù)的公共接口(API)標(biāo)準(zhǔn)。通過它應(yīng)用程序可以訪
2、問任何一種數(shù)據(jù)源而不必了解該數(shù)據(jù)源的細(xì)節(jié)(當(dāng)然該數(shù)據(jù)源要按ODBC標(biāo)準(zhǔn)提供驅(qū)動(dòng)程序) 。其組成如下圖所示: ODBC驅(qū)動(dòng)程序管理器(ODBC. DLL)各DBMS廠家提供的驅(qū)動(dòng)程序(*DLL)應(yīng)用程序網(wǎng)絡(luò)通信軟件數(shù)據(jù)源(DBMS) 通過ODBC API 訪問 可以說(shuō):ODBC是一個(gè)中間件。所謂中間件就是提供應(yīng)用程序間通信、會(huì)話或翻譯服務(wù)的程序。1、ODBC驅(qū)動(dòng)程序管理器作用 管理應(yīng)用程序和驅(qū)動(dòng)程序之間的交互作用,為應(yīng)用程序加載和調(diào)用驅(qū)動(dòng)程序。2、ODBC驅(qū)動(dòng)程序作用 執(zhí)行ODBC函數(shù)調(diào)用,提交SQL請(qǐng)求給指定的數(shù)據(jù)源(DBMS)并將結(jié)果返回給應(yīng)用程序。3、網(wǎng)絡(luò)通信軟件的作用負(fù)責(zé)網(wǎng)絡(luò)通信。例如:
3、TCP/IP協(xié)議。1.2 OLEDBODBC向應(yīng)用程序提供了一個(gè)訪問數(shù)據(jù)庫(kù)的統(tǒng)一API,這樣一來(lái),程序員只要掌握ODBC的API就可以開發(fā)訪問任何符合SQL標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)(SQL數(shù)據(jù)源)的程序了。然而,通過ODBC只能訪問SQL數(shù)據(jù)源,不能訪問其它數(shù)據(jù)源(例如:文件系統(tǒng)、目錄系統(tǒng)等)。OLEDB是微軟公司給出的訪問數(shù)據(jù)源(包括:SQL數(shù)據(jù)源、文件系統(tǒng)、目錄系統(tǒng)等)的通用標(biāo)準(zhǔn)。如圖所示:應(yīng)用程序DBMSSQL數(shù)據(jù)源OLEDB提供者文件系統(tǒng)目錄系統(tǒng)提供者提供者 OLE DB標(biāo)準(zhǔn)的具體實(shí)現(xiàn)是一組C+API函數(shù),OLE DB的API是符合COM標(biāo)準(zhǔn)、基于對(duì)象的。利用OLE DB API 可以編寫出能夠訪
4、問任何符合OLE DB標(biāo)準(zhǔn)的數(shù)據(jù)源的應(yīng)用程序。常用的OLE DB標(biāo)準(zhǔn)的服務(wù)提供程序介紹 名稱 說(shuō)明MSDASQL針對(duì)ODBC的OLE DB提供者SQLOLEDB針對(duì)SQL SERVER的OLE DB提供者ADsDSOObject針對(duì)活動(dòng)目錄的OLE DB提供者M(jìn)SIDXS針對(duì)索引服務(wù)的OLE DB提供者M(jìn)icrosoft.Jet.OLEDB.3.51針對(duì)MicrosoftJet的OLE DB提供者M(jìn)SDAORA針對(duì)Oracle的OLE DB提供者1.3 對(duì)象模型我們把ODBC、OLEDB統(tǒng)稱為訪問數(shù)據(jù)庫(kù)的中間件。ODBC的API函數(shù)是用C語(yǔ)言編寫的、OLEDB的API函數(shù)是用C+語(yǔ)言編寫的。開
5、發(fā)應(yīng)用程序的語(yǔ)言有許多種(C、C+、JAVA、VB等),如果開發(fā)應(yīng)用程序的語(yǔ)言與訪問數(shù)據(jù)庫(kù)的中間件API的語(yǔ)言不同,那么調(diào)用將很麻煩,并且調(diào)用時(shí)還要考慮這些API函數(shù)的調(diào)用時(shí)序。為了適應(yīng)面向?qū)ο蟮某绦蛟O(shè)計(jì),我們可以把ODBC、OLEDB的API函數(shù)封裝成對(duì)象,使面向?qū)ο蟮恼Z(yǔ)言調(diào)用更方便。應(yīng)用程序ADODAORDOODBCDirect數(shù)據(jù)提供者:MSDASQL其它數(shù)據(jù)提供者具體數(shù)據(jù)庫(kù)廠家提供的“提供者”JETODBCOLE DBSQL 數(shù)據(jù)源其它數(shù)據(jù)源ODBC驅(qū)動(dòng)程序2. 通過ODBC訪問數(shù)據(jù)庫(kù)3. 通過OLEDB訪問數(shù)據(jù)庫(kù)4. 通過ADO訪問數(shù)據(jù)庫(kù)ADO對(duì)象模型是對(duì)OLEDB的封裝。4.1 A
6、DO對(duì)象模型層次結(jié)構(gòu)ADO對(duì)象Connection對(duì)象Command對(duì)象Recordset對(duì)象屬性集合錯(cuò)誤集合參數(shù)集合字段集合屬性集合屬性集合屬性集合4.2 Connection Connection對(duì)象的主要用途是連接DBMS。4.2.1 屬性1、CommandTimeout 作用 指定中止某個(gè)相關(guān)Command對(duì)象的Execute調(diào)用之前必須等待的時(shí)間。 取值說(shuō)明 可讀寫Long類型。默認(rèn)值為30秒。 2、ConnectionString作用 提供數(shù)據(jù)提供者或服務(wù)提供者打開到數(shù)據(jù)源的連接所需要的特定連接信息。取值說(shuō)明 可讀寫String類型。3、ConnectionTimeout作用 指定
7、中止一個(gè)失敗的Connection.Open方法調(diào)用之前必須等待的時(shí)間。取值說(shuō)明 可讀寫Long類型。默認(rèn)值為15秒。4、CursorLocation 作用 確定是使用客戶端(adUseClient)游標(biāo)引擎,還是使用服務(wù)器端(adUseServer)游標(biāo)引擎。 取值說(shuō)明 可讀寫Long類型,具體如下: adUseClient:客戶段游標(biāo),好處是 :能降低網(wǎng)絡(luò)流量。 adUseServer:服務(wù)器段游標(biāo),好處是:程序?qū)?shù)據(jù)庫(kù)的修改可以立即反映到服務(wù)器,而且 其他用戶對(duì)數(shù)據(jù)庫(kù)的操作也可以馬上反映出來(lái);缺點(diǎn)是:網(wǎng)絡(luò)流量高,每個(gè)數(shù)據(jù)訪問都需要網(wǎng)絡(luò)交換數(shù)據(jù)。5、DefauitDatabase作用 設(shè)置
8、連接的默認(rèn)數(shù)據(jù)庫(kù),如果ConnectString中未指定數(shù)據(jù)庫(kù)名稱,就使用這里所指定的名稱 連接數(shù)據(jù)庫(kù)服務(wù)器時(shí),才需要指定該屬性值。因?yàn)橐粋€(gè)數(shù)據(jù)庫(kù)服務(wù)器下可能有許多數(shù)據(jù)庫(kù)。取值說(shuō)明 可讀寫String類型,服務(wù)器下的一個(gè)數(shù)據(jù)庫(kù)名稱。6、Errors集合和Error對(duì)象作用Errors集合:存放著Connection 連接產(chǎn)生的所有錯(cuò)誤,每一個(gè)錯(cuò)誤都是一個(gè)對(duì)象, 對(duì)象 AS Error型。該集合的方法有: Clear :清楚集合中的Error對(duì)象。 Refresh :刷新集合。 該集合的屬性有: Item :它是集合的默認(rèn)方法,它返回對(duì)集合中Error對(duì)象的引用。 Set Er=Adocon.E
9、rrors.Item ( 對(duì)象名 | 索引號(hào) ) Er為Error型變量。Adocon為Connection型變量。 Count :返回集合中對(duì)象的數(shù)目 Errors對(duì)象:該對(duì)象有七個(gè)只讀屬性,沒有方法。 Description :對(duì)錯(cuò)誤的簡(jiǎn)單文字說(shuō)明。String類型。 HelpContent :指定錯(cuò)誤在Windows Help文件中的標(biāo)識(shí)ID。Long型。 HelpFile :指定Windows Help文件名全稱。String類型 NativeError :指定特定提供者的錯(cuò)誤代碼。Long型。 Number :指定Errors在Errors集合中的索引值。Long型 Source :
10、返回導(dǎo)致錯(cuò)誤的對(duì)象的名稱。String類型 SQLstate :String類型 注意:不同廠家的DBMS的SQLstate不同。應(yīng)用說(shuō)明 dim cnnnwind as new adodb.connection dim rstcusts as new adodb.recordset on error goto l1 vider=”Microsoft.Jet.OLEDB.3.51” cnnnwind.open app.path & “nwind.mdb” , “admin” with rstcusts set .activeconnection=cnnnwind
11、 .cursortype=adopenkeyset .locktype=adlockbatchoptimistic .open “select * from non-existent”end withset adodc1.recordset= rstcustsexit subl1 : dim colerrors as errors dim errnwind as error set colerrors=cnnnwind.errors for each errnwind in colerrors debug.print “錯(cuò)誤描述:” & errnwind.description deb
12、ug.print “提供者錯(cuò)誤碼:” & errnwind.nativeerror debug.print “SQL狀態(tài)碼:” & errnwind.SQLstate next errnwind set colerrors=nothing set errnwind=nothing set rstcusts=nothing set cnnnwind=nothing 7、IsolationLevel 作用 指定和其他并發(fā)事務(wù)交互時(shí),使用鎖的行為,既設(shè)置鎖的隔離級(jí)別。只有用Connection對(duì)象的事務(wù)方法啟動(dòng)了事務(wù),該屬性的設(shè)置值才起作用。 取值說(shuō)明 可讀寫Long類型。 adXa
13、ctCursorStability 只允許讀其他事務(wù)已提交的改變(默認(rèn)值) adXactBrowse 允許讀其他事務(wù)未提交的改變 adXactChaos 本事務(wù)不會(huì)覆蓋其他位于更高隔離程度的事務(wù)所做的改變 adXactIsolated 所有事務(wù)相互獨(dú)立 adXactReadCommitted 等同于adXactCursorStability adXactReadUncommitted 等同于adXactBrowse adXactRepeatableRead 禁止讀其
14、他事務(wù)的改變 adXactSerializable 等同于adXactIsolated adXactUnspecified 不能確定提供者的事務(wù)隔離程度應(yīng)用說(shuō)明 8、Mode 作用 指定本連接的讀寫權(quán)限。 取值說(shuō)明 Long類型。 adModeUnknown 未指定數(shù)據(jù)源的連接許可權(quán)(默認(rèn)值) adModeRead 連接是只讀的 adModeReadWrite 連接是可讀寫的 adModeShareDenyNone 不拒絕其他用戶的讀寫訪問(Jet OLE DB
15、160;Provider的默認(rèn)值) adModeShareDenyRead 拒絕其他用戶打開到數(shù)據(jù)源的讀連接 adModeShareDenyWrite 拒絕其他用戶打開到數(shù)據(jù)源的寫連接 adModeShareExclusive 以獨(dú)占方式打開數(shù)據(jù)源 adModeWrite 連接是只寫的 用SQL數(shù)據(jù)定義語(yǔ)言DDL時(shí),必須是“獨(dú)占方式”。應(yīng)用說(shuō)明 19、Properties 作用 Connection對(duì)象的屬性集合。 取值說(shuō)明 只讀,Connection對(duì)象的屬性應(yīng)用說(shuō)明 11、Provider 作用 如
16、果ConnectionString中未指定OLE DB數(shù)據(jù)或服務(wù)提供者的名稱,就使用這時(shí)指定的名稱 取值說(shuō)明 可讀寫String類型,具體如下: MSDASQL:針對(duì)ODBC。 SQLOLEDB:針對(duì)SQL Server。 Microsoft.Jet.3.51:針對(duì)MicrosoftJet。 MSDAORA:針對(duì)Oracle。 ADsDSOObject:針對(duì)“活動(dòng)目錄”服務(wù)。 MSIDXS:針對(duì)“索引”服務(wù)。 12、State 作用 設(shè)置或指示連接是處于什么狀態(tài)。 取值說(shuō)明 可讀寫Long類型。 adStateClosed Connection(或其他對(duì)象)是關(guān)閉的(默認(rèn)值
17、) adStateConnecting 正在連接數(shù)據(jù)源的狀態(tài) adStateExecuting Connection或Command對(duì)象的Execute方法已被調(diào)用 adStateFetching 返回行(row)到Recordset對(duì)象 adStateOpen Connection(或其他對(duì)象)是打開的(活動(dòng)的) 4.2.2 方法1、BeginTans語(yǔ)法 Function BeginTans() as Long 連接對(duì)象名. BeginTans 參數(shù)說(shuō)明用途 初始化一個(gè)事務(wù);其后必須有CommitTrans和或
18、RollbackTrans相呼應(yīng).2、Cancel語(yǔ)法 Sub Cancel()參數(shù)說(shuō)明3、Close語(yǔ)法 Sub Close()連接對(duì)象名. Close參數(shù)說(shuō)明用途 關(guān)閉連接. 舉例 4、CommitTrans 語(yǔ)法 Sub CommitTrans() 參數(shù)說(shuō)明 用途 舉例 回送參數(shù),返回插入、修改、刪除操作后所影響的行數(shù)5、Execute 語(yǔ)法 Function Execute(CommandText As String, RecordsAffected, Options As Long = -1) As Recordset 參數(shù)說(shuō)明 CommandText:要執(zhí)行的SQL語(yǔ)句字符串。 R
19、ecordsAffected:回送參數(shù),返回插入、修改、刪除操作后所影響的行數(shù)Options As Long:確定以何種方式來(lái)產(chǎn)生“記錄集”,取值如下:取值說(shuō)明adCmdUnknown未定(默認(rèn)值),由提供者去判斷。adCmdFile是和對(duì)象類型相應(yīng)的文件名稱adCmdStoredProc是存儲(chǔ)過程名adCmdTable是能產(chǎn)生內(nèi)部SELECT *FROM 表名查詢的表名稱adCmdTableDirect是能直接從表中獲取行內(nèi)容的表名adCmdText是一條SQL語(yǔ)句用途 執(zhí)行一個(gè)SQL命令后,返回一個(gè)結(jié)果集。舉例 dim ADOcon as New ADODB.Connection dim
20、ADOcom as New ADODB.Command dim ADOrec as New ADODB.Recordset dim sqlstring as string ADOcon . Open “連接串及屬性設(shè)置” Sqlstring=”select * from 表名 where 條件”Set ADOrec=ADOcon . Execute(Sqlstring)或Set ADOrec=ADOcon . Execute(Command:=Strcommand , RowsAffected:=lng RowsAffected , Option :=lng Option)Strcommand:SQL語(yǔ)句,表名,存儲(chǔ)過程名lng RowsAffected:返回插入、修改、刪除操作后所影響的行數(shù)。對(duì)SELECT 語(yǔ)句返回0 。 6、Open 語(yǔ)法 Sub Open(ConnectionString As String, UserID As String, Password As String, Options As Long = -1)。 連接對(duì)象名. Open 參數(shù)說(shuō)明 用途 打開一個(gè)物理連接,用連接字符串來(lái)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)電子音樂器市場(chǎng)調(diào)查研究報(bào)告
- 2025年度游樂園設(shè)施租賃意外責(zé)任免除及安全保障協(xié)議
- 二零二五年度傳媒企業(yè)新媒體營(yíng)銷推廣合同范本
- 2025年度機(jī)動(dòng)車車牌拍賣與轉(zhuǎn)讓服務(wù)合同
- 2025年中國(guó)有色短纖市場(chǎng)調(diào)查研究報(bào)告
- 2025年度精裝修住宅房東租賃管理服務(wù)合同
- 二零二五年度花椒產(chǎn)品銷售分紅權(quán)收益協(xié)議
- 二零二五年度高校畢業(yè)生實(shí)習(xí)期間實(shí)習(xí)成果展示與應(yīng)用協(xié)議
- 二零二五年度特色小吃店合作開店合同
- 二零二五年度廠房租賃合同解除及租賃保證金退還協(xié)議
- 各類學(xué)校校園安全應(yīng)急預(yù)案匯編-(附應(yīng)急全套流程圖)
- 胃管非計(jì)劃拔管原因分析
- 微信欠條合同范本
- 博士高校面試答辯模板
- JT-T-1211.1-2018公路工程水泥混凝土用快速修補(bǔ)材料第1部分:水泥基修補(bǔ)材料
- 城區(qū)燃?xì)夤艿赖壤匣赂脑祉?xiàng)目(給水管網(wǎng)部分)施工圖設(shè)計(jì)說(shuō)明
- 2024年邵陽(yáng)工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 2024管廊電纜隧道電纜溝自動(dòng)滅火裝置選型
- 保安列隊(duì)培訓(xùn)方案
- 2024年山東淄博市城市資產(chǎn)運(yùn)營(yíng)有限公司招聘筆試參考題庫(kù)含答案解析
- 急性冠脈綜合征ACS課件
評(píng)論
0/150
提交評(píng)論