



全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
應(yīng)用程序依賴DBMS管理數(shù)據(jù)作為獨(dú)立的過(guò)程中,跑到intertact連接到數(shù)據(jù)庫(kù)系統(tǒng)。一旦建立好連接,SQL命令可以用來(lái)插入、刪除和修改數(shù)據(jù)。SQL查詢可以用來(lái)再試所需要的數(shù)據(jù),但是我們需要一個(gè)重要區(qū)別橋如何看到一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)和應(yīng)用程序如何在語(yǔ)言,如Java或C看到數(shù)據(jù):數(shù)據(jù)庫(kù)查詢的結(jié)果是一個(gè)集或記錄,但Java沒(méi)有設(shè)置或多集的數(shù)據(jù)類型。這失配是通過(guò)外加SQL構(gòu)建解決,允許應(yīng)用程序以獲得一個(gè)處理在一個(gè)收集和遍歷這些記錄一次一個(gè)人說(shuō)。我們介紹嵌入式SQL,動(dòng)態(tài)QQL,游標(biāo)在6.1節(jié)。嵌入式SQL允許存取數(shù)據(jù)的應(yīng)用中使用靜態(tài)SQL查詢代碼(6.1.1節(jié)); 用動(dòng)態(tài)SQL,我們能創(chuàng)造詢問(wèn)在運(yùn)行時(shí)(6.1.3節(jié))。游標(biāo)集之間的隔閡和編程語(yǔ)言查詢的答案不支持集值(6.1.2節(jié))。Java的出現(xiàn)作為一個(gè)流行的應(yīng)用程序開(kāi)發(fā)語(yǔ)言,特別是互聯(lián)網(wǎng)應(yīng)用程序,Java代碼數(shù)據(jù)庫(kù)的訪問(wèn)從一個(gè)特別重要的課題。第6.2節(jié)包括JDBC,編程的接口,讓執(zhí)行SQL查詢,從一個(gè)Java程序和使用的結(jié)果,在Java程序。JDBC提供更強(qiáng)大的可移植性嵌入式SQL或動(dòng)態(tài)SQL比,并提出了相應(yīng)的能力沒(méi)有重新完成連接多個(gè)數(shù)據(jù)庫(kù)代碼。第6.4節(jié)覆蓋SQL,這也同樣對(duì)靜態(tài)SQL查詢,但casier Java程序中,與JDBC。通常,是很有用的代碼執(zhí)行應(yīng)用數(shù)據(jù)庫(kù)服務(wù)器,而不僅僅是再試數(shù)據(jù)和執(zhí)行應(yīng)用程序邏輯在一個(gè)單獨(dú)的過(guò)程。第6.6節(jié)包括存儲(chǔ)過(guò)程,使應(yīng)用程序邏輯存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行。我們終章通過(guò)案例討論B&N在6.6節(jié)。在寫數(shù)據(jù)庫(kù)應(yīng)用程序。我們必須牢記,許多應(yīng)用程序通常并發(fā)運(yùn)行。交易的概念,介紹了在第一章是用來(lái)封裝應(yīng)用程序的影響數(shù)據(jù)庫(kù)。應(yīng)用程序可以選擇某些交易通過(guò)SQL命令來(lái)控制特性的程度的變化是接觸到其他并發(fā)運(yùn)行應(yīng)用程序。我們觸摸的交易理念在很多方面在這一章,特別是transaction-related方面覆蓋JDBC。完全討論交易性質(zhì)和SQL記賬采用借貸記賬法的支持是推遲到第十六章。6.1 從應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)在本節(jié)中,我們討論如何執(zhí)行SQL命令可以在一個(gè)程序在一個(gè)宿主語(yǔ)言如C或Java。使用SQL命令在一個(gè)宿主語(yǔ)言的程序被稱為嵌入式SQL。嵌入式SQL的細(xì)節(jié)也取決于主持人的語(yǔ)言。雖然類似的能力是支持多種主持人語(yǔ)言、語(yǔ)法有時(shí)是不同的。我們首先滿足基本要求的嵌入式SQL和靜態(tài)的SQL查詢6.1.1節(jié)。然后,我們6.1.25節(jié)介紹指針。我們討論動(dòng)態(tài)SQL,它允許我們構(gòu)建在運(yùn)行時(shí)的SQL查詢(執(zhí)行)的部分6.1.3。6.1.1 嵌入式SQL理論上,嵌入SQL命令在一個(gè)宿主語(yǔ)言程序很簡(jiǎn)單。SQL語(yǔ)句(如下。,而不是聲明),可用于無(wú)論的聲明是允許宿主語(yǔ)言(限制更少)。SQL語(yǔ)句必須有明確的標(biāo)志,一個(gè)預(yù)處理可以對(duì)付他們調(diào)用前編譯器對(duì)寄主的語(yǔ)言。同時(shí),任何主機(jī)語(yǔ)言變量用來(lái)傳遞參數(shù)轉(zhuǎn)入一個(gè)SQL命令必須被聲明,在SQL。特別是,一些特殊的安裝語(yǔ)言變量必須被宣布,在SQL(這樣,例如,任何錯(cuò)誤條件SQL執(zhí)行過(guò)程中出現(xiàn)的能溝通回到主要應(yīng)用程序在宿主語(yǔ)言)。然而,并發(fā)癥承受兩記在心里。首先,承認(rèn)的SQL數(shù)據(jù)類型不得認(rèn)可的主持人的語(yǔ)言與行動(dòng)或反之亦然。這是典型的錯(cuò)配上鑄造值之前,通過(guò)他們適當(dāng)或從SQL命令。(SQL,像其他的編程語(yǔ)言,提供了一種運(yùn)算符,用來(lái)扔進(jìn)一個(gè)值類型的價(jià)值觀的另一種類型的)。第二個(gè)并發(fā)癥與SQL被set-oriented,解決(請(qǐng)看段6.1.2使用指針。命令操作和生成報(bào)表,集。在我們討論嵌入式SQL,我們認(rèn)為語(yǔ)言是C語(yǔ)言的主人具體性,因?yàn)樾〔町惔嬖谟谇度胧絊QL語(yǔ)句是如何在不同主機(jī)的語(yǔ)言。聲明變量上下例外SQL語(yǔ)句可以參考變量定義在主程序中。這樣的hostlanguage將以減號(hào)作為前綴變量必須是一個(gè)冒號(hào)(:),在SQL語(yǔ)句中,執(zhí)行SQL命令宣布之間開(kāi)始執(zhí)行SQL聲明區(qū)和結(jié)束聲明部分。類似的聲明,他們將會(huì)如何看一個(gè)C程序,和往常一樣在C語(yǔ)言中,相隔分號(hào)。例如,我們可以聲明變量c_sname,c_sid,c_rating,c_age(最初c作為命名約定要強(qiáng)調(diào)的是,這些都是主人語(yǔ)言變量)如下:EXEC SQL BEGIN DECLARE SECTIONchar c_sname20;long c_sid;short c_rating;float c_age;EXEC SQL END DECLARE SECTION第一個(gè)問(wèn)題就是SQL類型相對(duì)應(yīng)的各種C類型,因?yàn)槲覀儎倓傂寄莻€(gè)值集C變量是為了被讀(并可能設(shè)置)在一個(gè)SQL運(yùn)行時(shí)環(huán)境是指一個(gè)SQL語(yǔ)句是執(zhí)行。SQL - 92標(biāo)準(zhǔn)定義了這樣一種對(duì)應(yīng)關(guān)系的語(yǔ)言類型和SQL類型主人數(shù)量的主機(jī)的語(yǔ)言。在我們的例子中,c_sname有字(20)當(dāng)一個(gè)SQL語(yǔ)句所指,c_sid有型整數(shù)。c_rating SMALLINT有型,c_age有真實(shí)的。我們還需要一些為SQL來(lái)報(bào)告什么差錯(cuò),如果發(fā)生錯(cuò)誤的條件時(shí),就產(chǎn)生了執(zhí)行SQL語(yǔ)句的。SQL - 92標(biāo)準(zhǔn)承認(rèn)兩個(gè)特殊的變量報(bào)告錯(cuò)誤,SQLCODE和所導(dǎo)致的。SQLCODE比較古老的定義兩個(gè),還有些負(fù)面價(jià)值當(dāng)一個(gè)錯(cuò)誤的情況出現(xiàn)。沒(méi)有指定一個(gè)特定進(jìn)一步正是錯(cuò)誤負(fù)整數(shù)表示。導(dǎo)致引進(jìn)的SQL - 92標(biāo)準(zhǔn)第一次,員工預(yù)定義的價(jià)值觀與幾種常見(jiàn)錯(cuò)誤條件,從而引入一些均勻性錯(cuò)誤是如何報(bào)道。這兩個(gè)變量的一個(gè)必須聲明。適當(dāng)?shù)腃類型是漫長(zhǎng)的,而且SQLCODE適當(dāng)?shù)腃類型是導(dǎo)致煤焦6,也就是一個(gè)字符串五個(gè)字符長(zhǎng)。(回憶null-terminator在C字符串。)在本章中,我們假設(shè)導(dǎo)致了。嵌入SQL語(yǔ)句所有的SQL語(yǔ)句,嵌入宿主程序必須有明確的標(biāo)志,依賴于主人細(xì)節(jié)語(yǔ)言在C。SQL語(yǔ)句必須將以減號(hào)作為前綴SQL。一個(gè)SQL語(yǔ)句能從本質(zhì)上出現(xiàn)在任何地方在宿主語(yǔ)言程序在宿主語(yǔ)言語(yǔ)句可以出現(xiàn)。作為一個(gè)簡(jiǎn)單的例子,下面的嵌入式SQL語(yǔ)句插入一行,其柱價(jià)值觀是基于價(jià)值觀熱銷的安裝語(yǔ)言包含在其中較為簡(jiǎn)便,水手們的關(guān)系。EXEC SQLINSERT INTO Sailors VALUES (:c_sname,:c_sid,:c_rating,:c_age);觀察到一個(gè)分號(hào)終止命令,按照慣例,為終止聲明在C。所導(dǎo)致的變量應(yīng)該檢查錯(cuò)誤和之后的每一個(gè)嵌入式SQL語(yǔ)句的例外。SQL命令提供每當(dāng)簡(jiǎn)化繁瑣的任務(wù):EXEC SQL WHENEVER SWLERROR| NOT FOUNDCONTINUE|GOTO stmt意愿所導(dǎo)致的價(jià)值應(yīng)檢查每一個(gè)嵌入式SQL語(yǔ)句的執(zhí)行。如果SQLERROR指定的值顯示所導(dǎo)致的例外,控制轉(zhuǎn)移到支撐,這也許是負(fù)責(zé)誤差與例外處理??刂剖且厕D(zhuǎn)移到如果沒(méi)有找到指定支撐的值是02000年所導(dǎo)致的,是沒(méi)有數(shù)據(jù)。6.1.2 游標(biāo)一個(gè)主要的問(wèn)題在許多嵌入SQL語(yǔ)句語(yǔ)言,如C是阻抗失配出現(xiàn)的,因?yàn)镾QL操作組的記錄,而語(yǔ)言如C不干凈支持set-of-records抽象。解決的辦法是本質(zhì)上提供一個(gè)機(jī)制,允許我們一次檢索行從關(guān)系。這個(gè)機(jī)制被稱為光標(biāo)。我們可以聲明一個(gè)光標(biāo)在任何關(guān)系或任何SQL查詢(因?yàn)槊總€(gè)查詢返回一組行)。一旦一個(gè)光標(biāo)被宣告,我們能打開(kāi)它(光標(biāo)位置,就在第一排); 拿下一場(chǎng)爭(zhēng)吵;移動(dòng)光標(biāo)(下一個(gè)劃船、排在下一場(chǎng)n,第一行,或以前的排等。,通過(guò)指定額外的參數(shù)取指令);或關(guān)閉游標(biāo)。因此,讓我們找回光標(biāo)基本上一個(gè)表的行光標(biāo)定位在某一行和閱讀內(nèi)容。光標(biāo)定義基本和用法讓我們檢查指針,在宿主語(yǔ)言編程,一個(gè)集排嵌入式SQL語(yǔ)句的計(jì)算: 我們通常需要打開(kāi)光標(biāo)如果嵌入的聲明是一種選擇(如下。一個(gè)查詢)。然而,我們可以避免開(kāi)個(gè)光標(biāo)如果答案包含一個(gè)排,因?yàn)槲覀兛吹讲痪谩?插入、刪除和更新報(bào)表通常不需要光標(biāo),盡管一些變體刪除及更新使用游標(biāo)。作為例子,我們可以找出這個(gè)名字和年齡的一名水手,指定通過(guò)指定一個(gè)價(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變量。因此,我們不需要一個(gè)指針嵌入這個(gè)查詢?cè)谝粋€(gè)宿主語(yǔ)言課程。但以下查詢,進(jìn)而電腦的姓名和年齡,所有的水手評(píng)級(jí)比的當(dāng)前值變量c_minrating主人嗎?DELETE S.sname,S.ageFROM Sailors SWHERE S.rating:c_minrating這個(gè)查詢返回一個(gè)集行,而不是一個(gè)排。在執(zhí)行時(shí)交互,答案是印在屏幕上。如果我們嵌入這個(gè)質(zhì)疑一個(gè)C程序的前綴執(zhí)行SQL命令的,怎么能答案會(huì)安裝語(yǔ)言變量的品牌嗎?進(jìn)入條款是不充分的,因?yàn)槲覀儽仨毺幚韼着?。解決的辦法是用光標(biāo):DECLARE sinfo CURSOR FORSELECT S.sname,S.ageFROM Sailors SWHERE S.rating:c.minrating;這個(gè)代碼可以包含在一個(gè)C程序,一旦執(zhí)行,光標(biāo)sinfo界定。隨后,我們能打開(kāi)光標(biāo):OPEN sinfo;c_minrating的價(jià)值在SQL查詢有關(guān)的光標(biāo)的價(jià)值這個(gè)變量當(dāng)我們打開(kāi)該游標(biāo)。(光標(biāo)宣言是在編譯處理,并打開(kāi)命令是在運(yùn)行時(shí)執(zhí)行。)光標(biāo)可以被認(rèn)為是“指向”收藏的連續(xù)查詢的答案相關(guān)。當(dāng)光標(biāo)是公開(kāi)的,所以它被定位就在第一排。我們可以用取指令讀第一排的光標(biāo)sinfo進(jìn)入宿主語(yǔ)言變量:FETCH sinfo INTO :c_sname,:c_age;當(dāng)FETCH語(yǔ)句的執(zhí)行,光標(biāo)定位指向下一行(哪一個(gè)是第一個(gè)排在桌旁,取實(shí)行開(kāi)放后第一次光標(biāo))及柱價(jià)值觀排復(fù)制到相應(yīng)的主機(jī)變量。通過(guò)反復(fù)執(zhí)行本FETCH語(yǔ)句(比如在一while-loop C程序),我們可以閱讀所有的行計(jì)算該查詢,一排的一段時(shí)間。額外的參數(shù),讓我們?nèi)ブ笓]位置光標(biāo)在非常靈活的方式,但是我們不討論他們。我們?cè)趺粗喇?dāng)我們已經(jīng)看過(guò)了所有的行聯(lián)系在一起的光標(biāo)?通過(guò)看SQLCODE或?qū)е绿厥獾淖兞?當(dāng)然。所導(dǎo)致的,例如,被設(shè)置到價(jià)值02000,是沒(méi)有數(shù)據(jù),表明沒(méi)有更多的行如果FETCH語(yǔ)句的光標(biāo)在最后一排。當(dāng)我們做了一個(gè)光標(biāo),我們可以關(guān)閉它:CLOSE sinfo;它可以又開(kāi)了,如果有需要的話,和價(jià)值的:c_minrating在SQL查詢相關(guān)的價(jià)值
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州1-3年級(jí)數(shù)學(xué)試卷
- 防汛減災(zāi)的策略及實(shí)施路徑
- 城鎮(zhèn)群供水及污水綜合處理能力提升項(xiàng)目初步設(shè)計(jì)
- 城鄉(xiāng)公路改建工程初步設(shè)計(jì)(范文參考)
- 2025年醫(yī)學(xué)高級(jí)職稱-普通外科學(xué)(醫(yī)學(xué)高級(jí))歷年參考題庫(kù)含答案解析(5卷單選一百題)
- 2025年醫(yī)學(xué)高級(jí)職稱-口腔外科(醫(yī)學(xué)高級(jí))歷年參考題庫(kù)含答案解析(5卷單選一百題)
- 2025年醫(yī)學(xué)高級(jí)職稱-臨床醫(yī)學(xué)檢驗(yàn)臨床微生物技術(shù)(醫(yī)學(xué)高級(jí))歷年參考題庫(kù)含答案解析(5卷單選100題)
- 2025年住院醫(yī)師規(guī)范培訓(xùn)(各省)-重慶住院醫(yī)師血液內(nèi)科歷年參考題庫(kù)含答案解析(5卷單項(xiàng)選擇題100題)
- 2025年住院醫(yī)師規(guī)范培訓(xùn)(各省)-甘肅住院醫(yī)師血液內(nèi)科歷年參考題庫(kù)含答案解析(5卷100題)
- 專題:語(yǔ)音選擇題 六年級(jí)英語(yǔ) 下學(xué)期小升初高頻考點(diǎn)培優(yōu)(含答案)
- JJG 597-2025交流電能表檢定裝置檢定規(guī)程
- 2025年廣州市中考物理試題(含答案)
- 2025-2026年中國(guó)臺(tái)球產(chǎn)業(yè)消費(fèi)趨勢(shì)報(bào)告
- 2025年第十屆“學(xué)憲法、講憲法”網(wǎng)絡(luò)知識(shí)競(jìng)賽題庫(kù)(含答案)
- 定額〔2025〕1號(hào)文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價(jià)格水平調(diào)整的通知
- 高一新生入學(xué)分班考試語(yǔ)文試卷含答案
- 格拉辛紙項(xiàng)目投資價(jià)值分析報(bào)告【參考模板】
- hs編碼對(duì)照表.xls
- 最新四川水利工程質(zhì)量備案表格填寫范例
- 臨海市括蒼鎮(zhèn)鎮(zhèn)區(qū)控制性詳細(xì)規(guī)劃
- 工程更改控制程序DFCPQEOMS-06
評(píng)論
0/150
提交評(píng)論