數(shù)據(jù)庫應用開發(fā) 嵌入式SQL課件_第1頁
數(shù)據(jù)庫應用開發(fā) 嵌入式SQL課件_第2頁
數(shù)據(jù)庫應用開發(fā) 嵌入式SQL課件_第3頁
數(shù)據(jù)庫應用開發(fā) 嵌入式SQL課件_第4頁
數(shù)據(jù)庫應用開發(fā) 嵌入式SQL課件_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第十章數(shù)據(jù)庫應用開發(fā)10.1嵌入式SQL

10.2基于OLEDB/ADO的數(shù)據(jù)庫開發(fā)方法10.3基于JDBC技術的數(shù)據(jù)庫開發(fā)方法10.4SQLJ及其在數(shù)據(jù)庫開發(fā)中的應用110.1嵌入式SQL一、嵌入式SQL概述二、嵌入式SQL的一般形式三、嵌入式SQL語句和主語言之間的通信四、不用游標的SQL語句五、使用游標的SQL語句2一、嵌入式SQL概述使用嵌入式SQL的原因SQL語言不便于進行事務處理中的流程控制;普通編程語言在涉及數(shù)據(jù)庫的操作時,不能高效率地進行數(shù)據(jù)的存取。將SQL語句嵌入到普通編程語言中使用,很好地結(jié)合了編程語言的過程性和SQL語言的數(shù)據(jù)操縱能力。嵌入式SQL語言:嵌入到普通編程語言中的SQL語言宿主語言:嵌入SQL語句的普通編程語言3二、嵌入式SQL的一般形式開始標志:EXECSQL結(jié)束標志:視不同的宿主語言而不同PL/1和C語言中以“;”作為結(jié)束標志COBOL語言以END-EXEC作為結(jié)束標志嵌入式SQL的一般形式:

開始標志+SQL語句+結(jié)束標志例:交互SQL:DROPTABLEemployee,嵌入到C語言中的寫法是:

EXECSQL

DROPTABLEemployee;5三、嵌入式SQL語句和

主語言之間的通信數(shù)據(jù)庫和源程序工作單元之間通信主要包括:向主語言傳遞SQL語句的執(zhí)行狀態(tài)信息,使主語言能夠據(jù)此控制程序流程;主語言向SQL語言提供參數(shù);將SQL語句查詢數(shù)據(jù)庫的結(jié)果交主語言進一步處理。采用的通信方式SQL—>主語言(SQL執(zhí)行狀態(tài)):SQLCA主語言—>SQL(輸入數(shù)據(jù)):主變量SQL—>主語言(輸出數(shù)據(jù)):主變量+游標6三、嵌入式SQL語句和

主語言之間的通信SQL通信區(qū)(SQLCA:SQLCommunicationArea)將系統(tǒng)當前的工作狀態(tài)和運行環(huán)境數(shù)據(jù)反饋給主程序在應用程序中的定義: EXECSQLINCLUDESQLCA;SQLCA.SQLCODE是SQLCA的一個分量,屬于整數(shù)類型,供DBMS向應用程序報告SQL語句的執(zhí)行情況。每執(zhí)行一條SQL語句,返回一個SQLCODE代碼。7三、嵌入式SQL語句和

主語言之間的通信主變量(hostvariable):是在嵌入式SQL中使用的主語言的程序變量,用來在輸入和輸出數(shù)據(jù)主變量聲明:

EXECSQLBEGINDECLARESECTION; 〈主變量說明段〉 EXECSQLENDDECLARESECTIONC語言中主變量聲明舉例: EXECSQLBEGINDECLARESECTION; ints_no;chars_name[30]; ints_age; EXECSQLENDDECLARESECTION9三、嵌入式SQL語句和

主語言之間的通信主變量使用SQL語句引用主變量時,變量名前加“:”在宿主語言中引用主變量時就無需再加“:”

s_no=101;EXECSQL

selectSNAME,SAGE

into

:s_name,:s_age

fromSTUDENT

whereSNO=:s_no;10三、嵌入式SQL語句和

主語言之間的通信指示變量(IndicatorVariable)也是主變量,用來指示返回給宿主變量的值是否為null在DML中,在宿主變量和指示變量之間加(:)或關鍵字indicator。

EXECSQLBEGINDECLARESECTION int s_no; char s_name[30]; int s_age;

short name_id;

short age_id; EXECSQLENDDECLARESECTION

EXECSQL

selectSNAME,SAGE

into

:s_name:name_id,:s_age:age_id

fromSTUDENT

whereSNO=:s_no;

11四、不用游標的SQL語句說明性語句;數(shù)據(jù)定義語句;數(shù)據(jù)控制語句;INSERT語句;查詢結(jié)果為單記錄的SELECT語句;對滿足條件的當前記錄(或記錄集),由系統(tǒng)根據(jù)用戶要求,自動進行修改或刪除的UPDATE和DELETE語句。13五、使用游標的SQL語句需要使用游標的語句有:查詢結(jié)果為多記錄的SELECT語句;對滿足條件的結(jié)果集中記錄分別進行修改或刪除的UPDATE和DELETE語句。14五、使用游標的SQL語句結(jié)果為多記錄的SELECT語句使用游標的步驟:說明游標:EXECSQLDECLARE<游標名>CURSOR

FOR<SELECT語句>;打開游標:EXECSQLOPEN<游標名>;推進游標指針并取當前記錄:EXECSQLFETCH<游標名>INTO<主變量名列表>;關閉游標:EXECSQLCLOSE<游標名>1510.2基于OLEDB/ADO的數(shù)據(jù)庫開發(fā)方法一、OLEDB二、ADO與OLEDB三、ADO應用程序開發(fā)17一、OLEDBMicrosoft采用OLE技術開發(fā)的一種新型的數(shù)據(jù)庫接口程序在ODBC技術的基礎上發(fā)展而來181.OLEDB的體系結(jié)構(gòu)OLEDB主要由三個層次構(gòu)成:⑴數(shù)據(jù)使用者(DataConsumer)⑵數(shù)據(jù)服務提供者(DataServiceProvider)⑶數(shù)據(jù)提供者(DataProvider)19二、ADO與OLEDB(1of2)21二、ADO與OLEDB(2of2)利用ADO訪問數(shù)據(jù)庫的方法與步驟:⑴連接數(shù)據(jù)源⑵創(chuàng)建SQL查詢命令對象⑶激活命令,產(chǎn)生記錄集⑷操作記錄集中的記錄⑸更新數(shù)據(jù)源22三、ADO應用程序開發(fā)可以在任何支持COM和自動化特性的語言環(huán)境中使用。具體應用見附件1。23一、JDBC驅(qū)動(1of2)Java應用程序JDBC驅(qū)動程序管理器JDBC-ODBC橋驅(qū)動程序MsSQL-ServerJDBC-Sybase驅(qū)動程序JDBC-Oracle驅(qū)動程序ODBC橋驅(qū)動程序SybaseSQL-ServerOracleDatabaseJDBCAPIJDBCdriverAPI25一、JDBC驅(qū)動(2of2)JDBC驅(qū)動程序有以下4類:⑴JDBC-ODBC橋,將JDBC調(diào)用轉(zhuǎn)化為ODBC(OpenDatabaseConnectivity)調(diào)用的“橋梁”,通過ODBC驅(qū)動程序來提供JDBC對數(shù)據(jù)庫的訪問。⑵本機應用編程接口部分Java驅(qū)動程序(Native-APIPartly-JavaDriver),將JDBC調(diào)用轉(zhuǎn)換為基于客戶端API的調(diào)用。⑶數(shù)據(jù)庫中間件的純Java驅(qū)動程序(Net-ProtocolAll-JavaDriver),將JDBC調(diào)用轉(zhuǎn)換成為中間件供應商的協(xié)議,然后通過中間件服務器將該協(xié)議轉(zhuǎn)換為DBMS協(xié)議。⑷直接連接數(shù)據(jù)庫的純Java驅(qū)動程序(Native-ProtocolAll-JavaDriver),將JDBC調(diào)用轉(zhuǎn)換為特定數(shù)據(jù)庫直接使用的網(wǎng)絡協(xié)議,這一類驅(qū)動程序通常由數(shù)據(jù)庫廠商自己開發(fā)。26二、JDBC的接口和類(3of8)⑵Statement類接口Statement接口用于執(zhí)行一個靜態(tài)的SQL語句,并得到SQL語句執(zhí)行后的結(jié)果。Statement接口常用的方法為:①ResultSetexecuteQuery(Stringsql)throwsSQLException②intexecuteUpdate(Stringsql)throwsSQLExceptton③voidclose()throwsSQLException29二、JDBC的接口和類(4of8)⑶PreparedStatement類PreparedStatement對象繼承Statement接口,因此也是用來執(zhí)行SQL語句的,與Statement接口不同的是,包含于PreparedStatement對象中的SQL語句具有一個或多個輸入(IN)參數(shù)。30二、JDBC的接口和類(5of8)⑷CallableStatement類是PreparedStatement類的子類對象用ParepareCall方法創(chuàng)建對象用于執(zhí)行SQL存儲過程31二、JDBC的接口和類(6of8)⑸ResultSet類提供從數(shù)據(jù)庫中返回的結(jié)果集使用該類的getXXX方法得到數(shù)據(jù)庫記錄集中某個字段的一條記錄32二、JDBC的接口和類(7of8)⑹其他常用的接口和類①java.sql.SQLException類②java.sql.Driver接口③java.sql.Connection接口④java.sql.Statement接口⑤java.sql.ResultSet接口33二、JDBC的接口和類(8

of8)DriverMangerConnectionstatementResultSetConnectionstatementstatementstatementResultSetResultSet34三、JDBC應用程序開發(fā)

1.連接數(shù)據(jù)庫的步驟⑴加載驅(qū)動程序⑵建立連接⑶對數(shù)據(jù)庫進行操作⑷關閉連接和相應的對象352.一個編程實例見附件23610.4SQLJ及其在數(shù)據(jù)庫開發(fā)中的應用

一、SQLJ與JDBC比較二、SQLJ應用程序開發(fā)37一、SQLJ與JDBC比較對于JAVA數(shù)據(jù)庫應用程序調(diào)用SQL,DB2提供了2種方法,即JDBC和SQLJ。JDBC提供給Java一個動態(tài)嵌入式SQL接口,Java程序可以通過Java數(shù)據(jù)庫連接(JDBC)方法調(diào)用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論