



全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
應(yīng)用程序依賴DBMS管理數(shù)據(jù)作為獨(dú)立的過程中,跑到intertact連接到數(shù)據(jù)庫系統(tǒng)。一旦建立好連接,SQL命令可以用來插入、刪除和修改數(shù)據(jù)。SQL查詢可以用來再試所需要的數(shù)據(jù),但是我們需要一個重要區(qū)別橋如何看到一個數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)和應(yīng)用程序如何在語言,如Java或C看到數(shù)據(jù):數(shù)據(jù)庫查詢的結(jié)果是一個集或記錄,但Java沒有設(shè)置或多集的數(shù)據(jù)類型。這失配是通過外加SQL構(gòu)建解決,允許應(yīng)用程序以獲得一個處理在一個收集和遍歷這些記錄一次一個人說。我們介紹嵌入式SQL,動態(tài)QQL,游標(biāo)在6.1節(jié)。嵌入式SQL允許存取數(shù)據(jù)的應(yīng)用中使用靜態(tài)SQL查詢代碼(6.1.1節(jié)); 用動態(tài)SQL,我們能創(chuàng)造詢問在運(yùn)行時(6.1.3節(jié))。游標(biāo)集之間的隔閡和編程語言查詢的答案不支持集值(6.1.2節(jié))。Java的出現(xiàn)作為一個流行的應(yīng)用程序開發(fā)語言,特別是互聯(lián)網(wǎng)應(yīng)用程序,Java代碼數(shù)據(jù)庫的訪問從一個特別重要的課題。第6.2節(jié)包括JDBC,編程的接口,讓執(zhí)行SQL查詢,從一個Java程序和使用的結(jié)果,在Java程序。JDBC提供更強(qiáng)大的可移植性嵌入式SQL或動態(tài)SQL比,并提出了相應(yīng)的能力沒有重新完成連接多個數(shù)據(jù)庫代碼。第6.4節(jié)覆蓋SQL,這也同樣對靜態(tài)SQL查詢,但casier Java程序中,與JDBC。通常,是很有用的代碼執(zhí)行應(yīng)用數(shù)據(jù)庫服務(wù)器,而不僅僅是再試數(shù)據(jù)和執(zhí)行應(yīng)用程序邏輯在一個單獨(dú)的過程。第6.6節(jié)包括存儲過程,使應(yīng)用程序邏輯存儲在數(shù)據(jù)庫服務(wù)器上執(zhí)行。我們終章通過案例討論B&N在6.6節(jié)。在寫數(shù)據(jù)庫應(yīng)用程序。我們必須牢記,許多應(yīng)用程序通常并發(fā)運(yùn)行。交易的概念,介紹了在第一章是用來封裝應(yīng)用程序的影響數(shù)據(jù)庫。應(yīng)用程序可以選擇某些交易通過SQL命令來控制特性的程度的變化是接觸到其他并發(fā)運(yùn)行應(yīng)用程序。我們觸摸的交易理念在很多方面在這一章,特別是transaction-related方面覆蓋JDBC。完全討論交易性質(zhì)和SQL記賬采用借貸記賬法的支持是推遲到第十六章。6.1 從應(yīng)用程序訪問數(shù)據(jù)庫在本節(jié)中,我們討論如何執(zhí)行SQL命令可以在一個程序在一個宿主語言如C或Java。使用SQL命令在一個宿主語言的程序被稱為嵌入式SQL。嵌入式SQL的細(xì)節(jié)也取決于主持人的語言。雖然類似的能力是支持多種主持人語言、語法有時是不同的。我們首先滿足基本要求的嵌入式SQL和靜態(tài)的SQL查詢6.1.1節(jié)。然后,我們6.1.25節(jié)介紹指針。我們討論動態(tài)SQL,它允許我們構(gòu)建在運(yùn)行時的SQL查詢(執(zhí)行)的部分6.1.3。6.1.1 嵌入式SQL理論上,嵌入SQL命令在一個宿主語言程序很簡單。SQL語句(如下。,而不是聲明),可用于無論的聲明是允許宿主語言(限制更少)。SQL語句必須有明確的標(biāo)志,一個預(yù)處理可以對付他們調(diào)用前編譯器對寄主的語言。同時,任何主機(jī)語言變量用來傳遞參數(shù)轉(zhuǎn)入一個SQL命令必須被聲明,在SQL。特別是,一些特殊的安裝語言變量必須被宣布,在SQL(這樣,例如,任何錯誤條件SQL執(zhí)行過程中出現(xiàn)的能溝通回到主要應(yīng)用程序在宿主語言)。然而,并發(fā)癥承受兩記在心里。首先,承認(rèn)的SQL數(shù)據(jù)類型不得認(rèn)可的主持人的語言與行動或反之亦然。這是典型的錯配上鑄造值之前,通過他們適當(dāng)或從SQL命令。(SQL,像其他的編程語言,提供了一種運(yùn)算符,用來扔進(jìn)一個值類型的價(jià)值觀的另一種類型的)。第二個并發(fā)癥與SQL被set-oriented,解決(請看段6.1.2使用指針。命令操作和生成報(bào)表,集。在我們討論嵌入式SQL,我們認(rèn)為語言是C語言的主人具體性,因?yàn)樾〔町惔嬖谟谇度胧絊QL語句是如何在不同主機(jī)的語言。聲明變量上下例外SQL語句可以參考變量定義在主程序中。這樣的hostlanguage將以減號作為前綴變量必須是一個冒號(:),在SQL語句中,執(zhí)行SQL命令宣布之間開始執(zhí)行SQL聲明區(qū)和結(jié)束聲明部分。類似的聲明,他們將會如何看一個C程序,和往常一樣在C語言中,相隔分號。例如,我們可以聲明變量c_sname,c_sid,c_rating,c_age(最初c作為命名約定要強(qiáng)調(diào)的是,這些都是主人語言變量)如下:EXEC SQL BEGIN DECLARE SECTIONchar c_sname20;long c_sid;short c_rating;float c_age;EXEC SQL END DECLARE SECTION第一個問題就是SQL類型相對應(yīng)的各種C類型,因?yàn)槲覀儎倓傂寄莻€值集C變量是為了被讀(并可能設(shè)置)在一個SQL運(yùn)行時環(huán)境是指一個SQL語句是執(zhí)行。SQL - 92標(biāo)準(zhǔn)定義了這樣一種對應(yīng)關(guān)系的語言類型和SQL類型主人數(shù)量的主機(jī)的語言。在我們的例子中,c_sname有字(20)當(dāng)一個SQL語句所指,c_sid有型整數(shù)。c_rating SMALLINT有型,c_age有真實(shí)的。我們還需要一些為SQL來報(bào)告什么差錯,如果發(fā)生錯誤的條件時,就產(chǎn)生了執(zhí)行SQL語句的。SQL - 92標(biāo)準(zhǔn)承認(rèn)兩個特殊的變量報(bào)告錯誤,SQLCODE和所導(dǎo)致的。SQLCODE比較古老的定義兩個,還有些負(fù)面價(jià)值當(dāng)一個錯誤的情況出現(xiàn)。沒有指定一個特定進(jìn)一步正是錯誤負(fù)整數(shù)表示。導(dǎo)致引進(jìn)的SQL - 92標(biāo)準(zhǔn)第一次,員工預(yù)定義的價(jià)值觀與幾種常見錯誤條件,從而引入一些均勻性錯誤是如何報(bào)道。這兩個變量的一個必須聲明。適當(dāng)?shù)腃類型是漫長的,而且SQLCODE適當(dāng)?shù)腃類型是導(dǎo)致煤焦6,也就是一個字符串五個字符長。(回憶null-terminator在C字符串。)在本章中,我們假設(shè)導(dǎo)致了。嵌入SQL語句所有的SQL語句,嵌入宿主程序必須有明確的標(biāo)志,依賴于主人細(xì)節(jié)語言在C。SQL語句必須將以減號作為前綴SQL。一個SQL語句能從本質(zhì)上出現(xiàn)在任何地方在宿主語言程序在宿主語言語句可以出現(xiàn)。作為一個簡單的例子,下面的嵌入式SQL語句插入一行,其柱價(jià)值觀是基于價(jià)值觀熱銷的安裝語言包含在其中較為簡便,水手們的關(guān)系。EXEC SQLINSERT INTO Sailors VALUES (:c_sname,:c_sid,:c_rating,:c_age);觀察到一個分號終止命令,按照慣例,為終止聲明在C。所導(dǎo)致的變量應(yīng)該檢查錯誤和之后的每一個嵌入式SQL語句的例外。SQL命令提供每當(dāng)簡化繁瑣的任務(wù):EXEC SQL WHENEVER SWLERROR| NOT FOUNDCONTINUE|GOTO stmt意愿所導(dǎo)致的價(jià)值應(yīng)檢查每一個嵌入式SQL語句的執(zhí)行。如果SQLERROR指定的值顯示所導(dǎo)致的例外,控制轉(zhuǎn)移到支撐,這也許是負(fù)責(zé)誤差與例外處理。控制是也轉(zhuǎn)移到如果沒有找到指定支撐的值是02000年所導(dǎo)致的,是沒有數(shù)據(jù)。6.1.2 游標(biāo)一個主要的問題在許多嵌入SQL語句語言,如C是阻抗失配出現(xiàn)的,因?yàn)镾QL操作組的記錄,而語言如C不干凈支持set-of-records抽象。解決的辦法是本質(zhì)上提供一個機(jī)制,允許我們一次檢索行從關(guān)系。這個機(jī)制被稱為光標(biāo)。我們可以聲明一個光標(biāo)在任何關(guān)系或任何SQL查詢(因?yàn)槊總€查詢返回一組行)。一旦一個光標(biāo)被宣告,我們能打開它(光標(biāo)位置,就在第一排); 拿下一場爭吵;移動光標(biāo)(下一個劃船、排在下一場n,第一行,或以前的排等。,通過指定額外的參數(shù)取指令);或關(guān)閉游標(biāo)。因此,讓我們找回光標(biāo)基本上一個表的行光標(biāo)定位在某一行和閱讀內(nèi)容。光標(biāo)定義基本和用法讓我們檢查指針,在宿主語言編程,一個集排嵌入式SQL語句的計(jì)算: 我們通常需要打開光標(biāo)如果嵌入的聲明是一種選擇(如下。一個查詢)。然而,我們可以避免開個光標(biāo)如果答案包含一個排,因?yàn)槲覀兛吹讲痪谩?插入、刪除和更新報(bào)表通常不需要光標(biāo),盡管一些變體刪除及更新使用游標(biāo)。作為例子,我們可以找出這個名字和年齡的一名水手,指定通過指定一個價(jià)值變量c_sid主持人宣布之前,如下:EXEC SQL SELECT S.sname,S.age INTO :_sname,:c_age FROM Sailors S WHERE S.sid = :c_sid;條款允許我們進(jìn)入指定的列排主機(jī)的單一的答案c_sname和c_age變量。因此,我們不需要一個指針嵌入這個查詢在一個宿主語言課程。但以下查詢,進(jìn)而電腦的姓名和年齡,所有的水手評級比的當(dāng)前值變量c_minrating主人嗎?DELETE S.sname,S.ageFROM Sailors SWHERE S.rating:c_minrating這個查詢返回一個集行,而不是一個排。在執(zhí)行時交互,答案是印在屏幕上。如果我們嵌入這個質(zhì)疑一個C程序的前綴執(zhí)行SQL命令的,怎么能答案會安裝語言變量的品牌嗎?進(jìn)入條款是不充分的,因?yàn)槲覀儽仨毺幚韼着?。解決的辦法是用光標(biāo):DECLARE sinfo CURSOR FORSELECT S.sname,S.ageFROM Sailors SWHERE S.rating:c.minrating;這個代碼可以包含在一個C程序,一旦執(zhí)行,光標(biāo)sinfo界定。隨后,我們能打開光標(biāo):OPEN sinfo;c_minrating的價(jià)值在SQL查詢有關(guān)的光標(biāo)的價(jià)值這個變量當(dāng)我們打開該游標(biāo)。(光標(biāo)宣言是在編譯處理,并打開命令是在運(yùn)行時執(zhí)行。)光標(biāo)可以被認(rèn)為是“指向”收藏的連續(xù)查詢的答案相關(guān)。當(dāng)光標(biāo)是公開的,所以它被定位就在第一排。我們可以用取指令讀第一排的光標(biāo)sinfo進(jìn)入宿主語言變量:FETCH sinfo INTO :c_sname,:c_age;當(dāng)FETCH語句的執(zhí)行,光標(biāo)定位指向下一行(哪一個是第一個排在桌旁,取實(shí)行開放后第一次光標(biāo))及柱價(jià)值觀排復(fù)制到相應(yīng)的主機(jī)變量。通過反復(fù)執(zhí)行本FETCH語句(比如在一while-loop C程序),我們可以閱讀所有的行計(jì)算該查詢,一排的一段時間。額外的參數(shù),讓我們?nèi)ブ笓]位置光標(biāo)在非常靈活的方式,但是我們不討論他們。我們怎么知道當(dāng)我們已經(jīng)看過了所有的行聯(lián)系在一起的光標(biāo)?通過看SQLCODE或?qū)е绿厥獾淖兞?當(dāng)然。所導(dǎo)致的,例如,被設(shè)置到價(jià)值02000,是沒有數(shù)據(jù),表明沒有更多的行如果FETCH語句的光標(biāo)在最后一排。當(dāng)我們做了一個光標(biāo),我們可以關(guān)閉它:CLOSE sinfo;它可以又開了,如果有需要的話,和價(jià)值的:c_minrating在SQL查詢相關(guān)的價(jià)值
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年短視頻廣告項(xiàng)目申請報(bào)告
- 2025年煤炭綜合采掘機(jī)械設(shè)備項(xiàng)目申請報(bào)告模板
- 大班飲食安全教學(xué)課件
- 機(jī)動車試題及答案
- 定型數(shù)學(xué)分析考試題及答案
- 化工維修電工試題及答案
- 獸醫(yī)助理晉級考試題庫及答案
- 3到6歲指南試題及答案及口訣
- 穿脫防護(hù)服的試題及答案
- 消防開業(yè)檢查課件
- 電線電纜產(chǎn)品生產(chǎn)許可證實(shí)施細(xì)則樣本
- 設(shè)計(jì)管理策劃書
- 事業(yè)部機(jī)構(gòu)設(shè)置
- 小學(xué)體育籃球行進(jìn)間運(yùn)球說課稿
- 工業(yè)互聯(lián)網(wǎng)體系架構(gòu)介紹
- ?;沸袠I(yè)重大事故隱患判定標(biāo)準(zhǔn)全面解讀
- 食品感官排列試驗(yàn)-排序檢驗(yàn)法
- 英語大白超能陸戰(zhàn)隊(duì)
- 數(shù)據(jù)鏈系統(tǒng)與技術(shù)(第2版) 課件ch07數(shù)據(jù)鏈的信息傳輸
- 幼兒園故事課件:《笨蛋漢斯》
- 來華留學(xué)生對中國文化認(rèn)同感的探究
評論
0/150
提交評論