版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)第10章 中間件技術(shù) 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2 本章重要概念 (1)中間件的定義和作用(2)ODBC分層的體系結(jié)構(gòu):應(yīng)用程序,驅(qū)動程序管理器,DB驅(qū)動程序,ODBC數(shù)據(jù)源。 (3)ODBC接口:應(yīng)用程序基本流程,ODBC句柄,ODBC連接,SQL語句的執(zhí)行。ODBC兩套符合性級別。典型的DB應(yīng)用系統(tǒng)開發(fā)工具。 (4)JDBC的基本功能,JDBC的結(jié)構(gòu),JDBC接口。 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)3前 言v 對于那些相對獨立的軟件供應(yīng)商而言,經(jīng)常要為每一個DBMS編寫一個版本的應(yīng)用程序,或者為每個要訪問的DBMS編寫針對DBMS的代碼。這
2、就意味著,大量的資源都耗在了編寫和維護DB的訪問上,更不用說應(yīng)用程序了。此時應(yīng)用程序的評價標準不再是質(zhì)量,而是它能否在給定的DBMS中訪問數(shù)據(jù)庫。v 這就需要開放的數(shù)據(jù)庫連接,就是人們需要用一種新的方法來訪問不同的數(shù)據(jù)庫。為此,在C/S系統(tǒng)中必須廣泛使用中間件技術(shù),以隱藏各種復雜性,屏蔽各種系統(tǒng)之間的差異。ODBC技術(shù)和JDBC技術(shù)就是這種優(yōu)秀的中間件技術(shù)。 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)410.1.1 中間件的定義v定義10.1 中間件(middleware)是分布式環(huán)境中保證操作系統(tǒng)、通信協(xié)議、數(shù)據(jù)庫等之間進行對話、互操作的軟件系統(tǒng)。數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)510.2.2
3、 中間件的作用v 中間件的作用是保證網(wǎng)絡(luò)中各部件(軟件和硬件)之間透明地連接,即隱藏網(wǎng)絡(luò)部件的異構(gòu)性,尤其保證不同網(wǎng)絡(luò)、不同DBMS和某些訪問語言的透明性,即下面三個透明性。v網(wǎng)絡(luò)透明性:能支持所有類型的網(wǎng)絡(luò) 。v服務(wù)器透明性:不管服務(wù)器上的DBMS是何種型號(ORACLE、SYBASE、DB2等),一個好的中間件都能通過標準的SQL語言與不同DBMS上的SQL語言連接起來。 語言透明性:客戶機可用任何開發(fā)語言進行發(fā)送請求和接受回答,被調(diào)用的功能應(yīng)該像語言那樣也是獨立的。 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)610.2.1 ODBC概念圖10.1 采用API的應(yīng)用編程 數(shù)據(jù)庫系統(tǒng)教程 第10章
4、 中間件技術(shù)710.2.2 ODBC的體系結(jié)構(gòu)(一)圖10.2 ODBC的分層體系結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)810.2.2 ODBC的體系結(jié)構(gòu)(二)v應(yīng)用程序的主要功能是:調(diào)用ODBC函數(shù),遞交SQL語句給DBMS,檢索出結(jié)果,并進行處理。 v驅(qū)動程序管理器是一個動態(tài)連接庫(DLL),用于連接各種DBS的DBMS驅(qū)動程序(如Oracle、Foxpro、Sybase等驅(qū)動程序),管理應(yīng)用程序和DBMS驅(qū)動程序之間的交互作用(通信)。v應(yīng)用程序通過調(diào)用驅(qū)動程序所支持的函數(shù)來操縱數(shù)據(jù)庫。驅(qū)動程序也是一個動態(tài)連接庫(DLL)。 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)910.2.2 ODBC
5、的體系結(jié)構(gòu)(三)圖10.3 網(wǎng)絡(luò)環(huán)境下基于單層驅(qū)動程序的ODBC結(jié)構(gòu) 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1010.2.2 ODBC的體系結(jié)構(gòu)(四)圖10.4 基于多層驅(qū)動程序的ODBC結(jié)構(gòu)(兩層結(jié)構(gòu)) 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1110.2.2 ODBC的體系結(jié)構(gòu)(五)v基于網(wǎng)關(guān)機制的多層驅(qū)動程序的ODBC結(jié)構(gòu) 圖10.4 基于網(wǎng)關(guān)機制的多層驅(qū)動程序ODBC結(jié)構(gòu)(三層結(jié)構(gòu)) 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1210.2.2 ODBC的體系結(jié)構(gòu)(六)v用戶數(shù)據(jù)源:用戶創(chuàng)建的數(shù)據(jù)源,稱為“用戶數(shù)據(jù)源”。此時只有創(chuàng)建者才能使用,并且只能在所定義的機器上運行。任何用戶都不能使用其他用戶
6、創(chuàng)建的用戶數(shù)據(jù)源。v系統(tǒng)數(shù)據(jù)源:所有用戶和在Windows NT下以服務(wù)方式運行的應(yīng)用程序均可使用系統(tǒng)數(shù)據(jù)源。v文件數(shù)據(jù)源:文件數(shù)據(jù)源是ODBC 3.0以上版本增加的一種數(shù)據(jù)源,可用于企業(yè)用戶,ODBC驅(qū)動程序也安裝在用戶的計算機上。數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1310.2.3 ODBC的特性vODBC是一個調(diào)用層的接口 vODBC定義了標準的SQL語法 vODBC提供一個驅(qū)動程序管理器來管理并同時訪問多個DBMS系統(tǒng) 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1410.3.1 ODBC應(yīng)用程序的基本流程圖10.6 ODBC應(yīng)用程序的基本流程 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1510.3
7、.2 ODBC句柄(一)圖10.7 三種句柄之間的關(guān)系 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1610.3.2 ODBC句柄(二)henvhdbchstmt環(huán)境句柄(定義DB應(yīng)用環(huán)境)連接句柄(定義一個DB連接)語句句柄(定義一個SQL語句)圖10.8 各種句柄之間的關(guān)系 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1710.3.3 數(shù)據(jù)源的連接與斷開(1) 連接數(shù)據(jù)源的函數(shù)連接數(shù)據(jù)源的函數(shù)有三個,但最有效、最通用的是下面一種格式:SQLConnect(hdbc,szDSN,cbDSN,szUID,cbUID,szAuthStr,cbAuthStr)。其中,參數(shù)hdbc是一個已經(jīng)分配的連接分配;參數(shù)sz
8、DSN和cbDSN分別表示系統(tǒng)所要連接的數(shù)據(jù)源名稱及其長度;參數(shù)szUID和cbUID分別表示用戶標識符及其長度 ;參數(shù)szAuthStr和cbAuthStr分別表示權(quán)限字符串及其長度(2) 斷開數(shù)據(jù)源函數(shù)其格式如下:SQLDisconnect(hdbc)其中,參數(shù)hdbc是要斷開的連接句柄。 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1810.3.4 SQL語句的執(zhí)行(一)main() HENV henv;*說明henv是一個環(huán)境型變量*HDBC hdbc;*說明hdbc是一個連接型變量*HSTMThstmt;*說明hstmt是一個語句句柄變量*RETCODE retcode;*說明retcode
9、是一個返回變量*SQLAllocEnv(&henv);*分配一個環(huán)境句柄*SQLAllocConnect(henv,&hdbc);*分配一個連接句柄*SQLConnect(hdbc,學生,SQL_NTS,NULL,0,NULL,0);*連接數(shù)據(jù)源*SQLAllocStmt(hdbc,&hstmt);*分配一個語句句柄*retcode=SQLExecDirect(hstmt,SELECT * FROM S,SQL_NTS);*執(zhí)行語句* *結(jié)果集處理*SQLDisconnect(hdbc);*斷開數(shù)據(jù)源*SQLFreeStmt(hstmt,SQL_DROP)*釋放一個語句
10、句柄*SQLFreeConnect(hdbc);*釋放一個連接句柄*SQLFreeEnv(henv);*當應(yīng)用完成后,釋放環(huán)境句柄* 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)1910.3.4 SQL語句的執(zhí)行(二)v有準備地執(zhí)行SQL語句的函數(shù)v(1) SQL語句預備函數(shù)其格式如下:SQLPrepare(hstmt,szSqlStr,cbSqlStr)。其中,參數(shù)hstmt是一個有效的語句句柄,參數(shù)szSqlStr和cbSqlStr分別表示將要執(zhí)行的SQL語句的字符串及其長度。v (2) SQL語句執(zhí)行函數(shù)其格式如下:SQLExecute(hstmt)。其中參數(shù)hstmt是一個有效的語句句柄。數(shù)據(jù)
11、庫系統(tǒng)教程 第10章 中間件技術(shù)2010.3.5 查詢結(jié)果的獲取while(RETCODE_IS_SUCCESSFUL(retcode) retcode=SQLFetch(hstmt);if(RETCODE_IS_SUCCESSFUL(retcode) do rcGetData = SQLGetData(hstmt,1,SQL_C_CHAR,szBuffer,sizeof(szBuffer),&cbValue);DISPLAY_MEMO(szBuffer,cbValue);*顯示* while( rcGetData!=SQL_NO_DATA_FOUND);數(shù)據(jù)庫系統(tǒng)教程 第10章 中間
12、件技術(shù)2110.4 ODBC的符合性級別ODBC使得我們能夠訪問任何數(shù)據(jù)源而不必修改應(yīng)用程序。但在實際使用中存在著一些問題。由于DBMS廠商提供的SQL不同(不是指形式上,而是功能上有多有少),有的SQL功能在某廠商的DBMS上沒有實現(xiàn),則ODBC就不可能為應(yīng)用程序完成這一功能;有的SQL功能是SQL標準新增加的,而DBMS廠商沒有及時跟上,則ODBC同樣也無法完成新功能。對于具體DBMS不支持的SQL功能,DBMS要通報給應(yīng)用程序。而從ODBC本身來講,它最好支持完全的SQL,這樣才能做到應(yīng)用程序不用修改就可以訪問不同的數(shù)據(jù)源。數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2210.4.1 API符合
13、性的三個級別v核心級API v1級API v2級API 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2310.4.2 SQL符合性的三個級別v最小級SQL v核心級SQL v擴展級SQL 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2410.4.3 ODBC API與SQL CLI之間的協(xié)調(diào)v Microsoft公司于1991年11月提出了一個關(guān)于ODBC的體系結(jié)構(gòu),并在1992年發(fā)布了ODBC 1.0規(guī)范,隨后以軟件開發(fā)工具包(SDK)形式出版并發(fā)行了這種面向SQL的API。 v 數(shù)據(jù)庫公司國際財團SQL Access Group(SAG)和標準化組織XOpen在1992年聯(lián)合出版了一個規(guī)范,該規(guī)范定義了調(diào)
14、用級界面(Call Level Interface),CLI)標準。 v 1993年,Microsoft公司推出了ODBC 2.0規(guī)范,并于1994年出版了ODBC 2.0 SDK。 v Microsoft在1998年出版的ODBC 3.0規(guī)范中,作了一些修改,目的是更進一步接近SQL標準。v SQL3(即SQL99)的第三部分介紹了SQLCLI。 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2510.4.4 典型的數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)工具vPowerBilder vDelphi vVisual Basic vDeveloper2000 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2610.5.1 Java簡介
15、vJava語言 vJava的工作方式 vJava的特性 vJava的應(yīng)用程序和小程序 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2710.5.2 JDBC的提出vJDBC是執(zhí)行SQL語句的Java API。JDBC是“Java DataBase Connectivity”(JDBC數(shù)據(jù)庫連接 )的縮寫。JDBC原來是Java Soft公司設(shè)計的Java語言的數(shù)據(jù)庫訪問API。最初的Java語言本身并沒有訪問DB的能力,JDBC是第一個支持Java語言的標準的數(shù)據(jù)庫API。1996年夏天,Sun公司推出了JDBC工具?,F(xiàn)在JDBC驅(qū)動程序已經(jīng)被大多數(shù)主流數(shù)據(jù)庫所用。vJDBC由一組用Java語言編寫的
16、類與接口組成。vJDBC擴充了Java的應(yīng)用范圍,用Java與JDBC API可以發(fā)布一種包含遠程數(shù)據(jù)庫信息的Applet(小應(yīng)用程序)的WWW頁面。數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2810.5.3 JDBC的基本功能v建立與數(shù)據(jù)庫的連接v發(fā)送SQL語句v處理結(jié)果數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)2910.5.4 JDBC與CGI的比較圖10.11 通過JDBC服務(wù)器訪問數(shù)據(jù)庫 圖10.10 CGI腳本的調(diào)用及實現(xiàn)過程 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)3010.6.1 JDBC數(shù)據(jù)庫設(shè)計方法圖10.12 JDBC兩層應(yīng)用模型圖10.12 JDBC三層應(yīng)用模型數(shù)據(jù)庫系統(tǒng)教程 第10章
17、中間件技術(shù)3110.6.2 保持一致性的措施v允許將任何查詢字符串傳遞給基礎(chǔ)DBMS驅(qū)動器,這意味著應(yīng)用可以自動地使用盡可能多的SQL功能,但這會使某些DBMS系統(tǒng)接收到某種錯誤的查詢。v采用ODBC風格的方法,提供表示幾種常見的SQL差別的標準JDBC語法。v對于復雜應(yīng)用,借助于DatabaseMetaData接口,提供關(guān)于DBMS的描述性信息,使應(yīng)用能適應(yīng)每個DBMS的需求與能力。數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)3210.6.3 JDBC驅(qū)動程序v本地庫Java實現(xiàn) v網(wǎng)絡(luò)協(xié)議Java驅(qū)動程序 v本地協(xié)議Java驅(qū)動程序 vJDBC-ODBC橋驅(qū)動程序 數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件
18、技術(shù)3310.7.1 JDBC API的目標v為Java定義一個“調(diào)用層”(call-level)的SQL接口v遵循SQL2標準vJDBC應(yīng)建立在現(xiàn)存的數(shù)據(jù)庫接口上v必須保證這個接口與Java系統(tǒng)的其他部分保持一致v使基本的API盡量簡單v盡量保持強大的、靜態(tài)的類型數(shù)據(jù)庫系統(tǒng)教程 第10章 中間件技術(shù)3410.7.2 JDBC API接口概貌JDBC接口分為兩個層次,一個是面向程序開發(fā)人員的JDBC API,另外一個是底層的JDBC Driver API。一般來說,應(yīng)用程序?qū)邮菙?shù)據(jù)庫應(yīng)用程序開發(fā)者使用的,驅(qū)動程序?qū)邮球?qū)動廠家實現(xiàn)的。對于應(yīng)用程序開發(fā)者來說只要求JDBC API所提供的接口能保證與JDBC相符合。而對于驅(qū)動程序?qū)觿t要負責開開發(fā)數(shù)據(jù)庫接口和支持JDBC應(yīng)用程序?qū)诱{(diào)用的編碼。每一個驅(qū)動程序?qū)佣急仨殞崿F(xiàn)4個組要的接口,應(yīng)用程序?qū)雍万?qū)動程序?qū)佑靡粋€類橋接。這4個接口分別是Driver、Connection、Statement和ResultSet。Driver接口建立與數(shù)據(jù)庫的連接,大多數(shù)應(yīng)用程序中,Driver接口功能是通過驅(qū)動程序管理器(DriverManager)類實現(xiàn)的,提供給使用者的另一層的抽象。 數(shù)據(jù)庫系統(tǒng)教程 第1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江警官職業(yè)學院《品牌形象專項設(shè)計一》2023-2024學年第一學期期末試卷
- 中國民用航空飛行學院《現(xiàn)代交換技術(shù)》2023-2024學年第一學期期末試卷
- 鄭州旅游職業(yè)學院《當代資本主義》2023-2024學年第一學期期末試卷
- 小學預算編制收支審批制度
- 浙江傳媒學院《應(yīng)用程序設(shè)計實驗》2023-2024學年第一學期期末試卷
- 漳州城市職業(yè)學院《長跑》2023-2024學年第一學期期末試卷
- 深度學習在元數(shù)據(jù)分析中的探索
- 雙十二品牌提升策略模板
- 專業(yè)基礎(chǔ)-房地產(chǎn)經(jīng)紀人《專業(yè)基礎(chǔ)》點睛提分卷3
- 2024-2025學年江蘇省無錫市江陰市八年級(上)期末數(shù)學試卷
- 【魔鏡洞察】2024藥食同源保健品滋補品行業(yè)分析報告
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗人員理論考試題及答案
- 2024年駐村第一書記工作總結(jié)干貨3篇
- 教室裝修施工計劃
- 診療方案自查整改報告(2篇)
- 滬教版四年級上冊數(shù)學列式計算(附參考答案)
- 醫(yī)院侵害未成年人案件強制報告制度
- 眼的解剖結(jié)構(gòu)與生理功能課件
- DL-T 572-2021電力變壓器運行規(guī)程-PDF解密
- 農(nóng)村生態(tài)環(huán)境保護培訓
- 科學精神與科學研究方法智慧樹知到期末考試答案2024年
評論
0/150
提交評論