嵌入式SQL語(yǔ)言_第1頁(yè)
嵌入式SQL語(yǔ)言_第2頁(yè)
嵌入式SQL語(yǔ)言_第3頁(yè)
嵌入式SQL語(yǔ)言_第4頁(yè)
嵌入式SQL語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)第第14章章 嵌入式嵌入式SQL語(yǔ)言語(yǔ)言 14-1 14-1 嵌入式嵌入式SQL語(yǔ)句語(yǔ)句 14-2 14-2 動(dòng)態(tài)動(dòng)態(tài)SQL語(yǔ)句語(yǔ)句 數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)14-1 嵌入式嵌入式SQL語(yǔ)句語(yǔ)句 nSQL語(yǔ)句:語(yǔ)句: 每個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)(每個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)(DMS)都有其自己的)都有其自己的數(shù)據(jù)處理語(yǔ)言(數(shù)據(jù)處理語(yǔ)言(DML),所有),所有DML語(yǔ)言都是基語(yǔ)言都是基于一種語(yǔ)言(于一種語(yǔ)言(SQL語(yǔ)言,又稱為結(jié)構(gòu)化的查詢語(yǔ)言,又稱為結(jié)構(gòu)化的查詢語(yǔ)言)。語(yǔ)言)。 SQL語(yǔ)句有三種主要類型。最常見(jiàn)的語(yǔ)句語(yǔ)句有三種主要類型。最常見(jiàn)的語(yǔ)句(query),即信息請(qǐng)求,第二種

2、是數(shù)據(jù)修改語(yǔ)即信息請(qǐng)求,第二種是數(shù)據(jù)修改語(yǔ)句,即數(shù)據(jù)的添加、刪除或更新。最后一種類型句,即數(shù)據(jù)的添加、刪除或更新。最后一種類型是系統(tǒng)和事務(wù)處理管理(例如,生成表、授權(quán)安是系統(tǒng)和事務(wù)處理管理(例如,生成表、授權(quán)安全許可、提交、以及回調(diào)事務(wù)處理)。全許可、提交、以及回調(diào)事務(wù)處理)。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n 以前介紹的以前介紹的SQL語(yǔ)言是作為獨(dú)立語(yǔ)言在終端交互方語(yǔ)言是作為獨(dú)立語(yǔ)言在終端交互方式下使用的。這是面向集合的描述性語(yǔ)言,是非過(guò)程性式下使用的。這是面向集合的描述性語(yǔ)言,是非過(guò)程性的。即大多數(shù)語(yǔ)句都是獨(dú)立執(zhí)行,與上下文無(wú)關(guān)的。而的。即大多數(shù)語(yǔ)句都是獨(dú)立執(zhí)行,與上下文無(wú)關(guān)的。而許多事務(wù)處理

3、應(yīng)用都是過(guò)程性的,需要根據(jù)不同的條件許多事務(wù)處理應(yīng)用都是過(guò)程性的,需要根據(jù)不同的條件來(lái)執(zhí)行不問(wèn)的任務(wù),因此單純用來(lái)執(zhí)行不問(wèn)的任務(wù),因此單純用SQL語(yǔ)言是很難實(shí)現(xiàn)這語(yǔ)言是很難實(shí)現(xiàn)這類應(yīng)用的。類應(yīng)用的。n 在在PB中由于擁有功能強(qiáng)大的數(shù)據(jù)窗口,使得對(duì)數(shù)據(jù)中由于擁有功能強(qiáng)大的數(shù)據(jù)窗口,使得對(duì)數(shù)據(jù)庫(kù)的操作一般都由數(shù)據(jù)窗口完成。然而數(shù)據(jù)窗口也不是庫(kù)的操作一般都由數(shù)據(jù)窗口完成。然而數(shù)據(jù)窗口也不是萬(wàn)能的(比如程序中連接數(shù)據(jù)庫(kù)就必須通過(guò)嵌入式萬(wàn)能的(比如程序中連接數(shù)據(jù)庫(kù)就必須通過(guò)嵌入式SQL來(lái)完成),有時(shí)候,在程序中我們往往需要對(duì)數(shù)據(jù)庫(kù)進(jìn)來(lái)完成),有時(shí)候,在程序中我們往往需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀取或修改一行數(shù)據(jù),需

4、要?jiǎng)討B(tài)的查詢一些數(shù)據(jù),查行讀取或修改一行數(shù)據(jù),需要?jiǎng)討B(tài)的查詢一些數(shù)據(jù),查詢條件由在程序中動(dòng)態(tài)設(shè)定,這時(shí)使用詢條件由在程序中動(dòng)態(tài)設(shè)定,這時(shí)使用SQL語(yǔ)句就顯得語(yǔ)句就顯得靈活方便。針對(duì)這類應(yīng)用需求,靈活方便。針對(duì)這類應(yīng)用需求,PowerScript提供了提供了一整套嵌入式一整套嵌入式SQL語(yǔ)句。利用嵌入式語(yǔ)句。利用嵌入式SQL語(yǔ)句,我們能語(yǔ)句,我們能夠在程序中靈活地操縱數(shù)據(jù)庫(kù)。夠在程序中靈活地操縱數(shù)據(jù)庫(kù)。 數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)PowerScript支持在程序中使用嵌入式支持在程序中使用嵌入式SQL語(yǔ)句。語(yǔ)句。 實(shí)際上,對(duì)這類語(yǔ)句,實(shí)際上,對(duì)這類語(yǔ)句,PowerBuilder在在將其發(fā)送到將

5、其發(fā)送到DBMS之前,并不做任何處理,而之前,并不做任何處理,而由由DBMS完成相應(yīng)操作,最后完成相應(yīng)操作,最后PowerBuilder得到處理結(jié)果。得到處理結(jié)果。 在程序中書(shū)寫(xiě)在程序中書(shū)寫(xiě)SQL語(yǔ)句的格式為:語(yǔ)句的格式為: SQL語(yǔ)句;語(yǔ)句; 整個(gè)整個(gè)SQL語(yǔ)句可以寫(xiě)在一行,也可以寫(xiě)成更語(yǔ)句可以寫(xiě)在一行,也可以寫(xiě)成更易理解的多行格式,只要在語(yǔ)句結(jié)束處放上一個(gè)易理解的多行格式,只要在語(yǔ)句結(jié)束處放上一個(gè)分號(hào)(;)即可。在分號(hào)(;)即可。在SQL語(yǔ)句中可以使用常量語(yǔ)句中可以使用常量或合法的變量,但使用變量時(shí)須在變量前加個(gè)冒或合法的變量,但使用變量時(shí)須在變量前加個(gè)冒號(hào)(:)(通常稱做綁定變量或引用變

6、量),多號(hào)(:)(通常稱做綁定變量或引用變量),多個(gè)變量或常量之間用逗號(hào)(,)分隔。個(gè)變量或常量之間用逗號(hào)(,)分隔。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n例如:例如: INSERT INTO Employee (Emp_nbr, Emp_name) VALUES (:EmpNbr, 李明李明) ; 其中,其中,Employee是表名,是表名,Emp_nbr、Emp_name是列名,是列名,EmpNbr是程序說(shuō)明的是程序說(shuō)明的變量,整個(gè)語(yǔ)句的意思是在表變量,整個(gè)語(yǔ)句的意思是在表Employee中插中插入一條記錄,該記錄入一條記錄,該記錄Emp_nbr列的值為變量列的值為變量EmpNbr中存放的值,列中

7、存放的值,列Emp_name的值為的值為“李明李明”。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)一、一、 嵌入式的嵌入式的SQL語(yǔ)句語(yǔ)句n什么是嵌入式的什么是嵌入式的SQL語(yǔ)句?嵌入式包含以下的語(yǔ)句?嵌入式包含以下的含義:含義:n 嵌入式的嵌入式的SQL語(yǔ)句可以直接嵌入到用戶的語(yǔ)句可以直接嵌入到用戶的powerscript中中n 嵌入式的嵌入式的SQL語(yǔ)句使用戶能在命令的各個(gè)區(qū)語(yǔ)句使用戶能在命令的各個(gè)區(qū)域包含域包含powerscript變量。變量。n 利用嵌入式的利用嵌入式的SQL語(yǔ)句,我們能夠在程序中語(yǔ)句,我們能夠在程序中靈活的操縱數(shù)據(jù)庫(kù),實(shí)際上對(duì)這類語(yǔ)句,靈活的操縱數(shù)據(jù)庫(kù),實(shí)際上對(duì)這類語(yǔ)句,PB在在將其

8、發(fā)送到將其發(fā)送到DBMS之前,并不做任何處理,而之前,并不做任何處理,而由由DBMS完成相應(yīng)的操作,最后由完成相應(yīng)的操作,最后由powerbuilder得到處理結(jié)果。得到處理結(jié)果。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n 嵌入式的嵌入式的SQL語(yǔ)句執(zhí)行后可能失敗也可能成語(yǔ)句執(zhí)行后可能失敗也可能成功。功。n 良好的編程風(fēng)格應(yīng)對(duì)每條良好的編程風(fēng)格應(yīng)對(duì)每條SQL語(yǔ)句的執(zhí)行結(jié)語(yǔ)句的執(zhí)行結(jié)果進(jìn)行檢查。執(zhí)行結(jié)果存放在事務(wù)對(duì)象的果進(jìn)行檢查。執(zhí)行結(jié)果存放在事務(wù)對(duì)象的SQLCODE當(dāng)中,當(dāng)中,0表示成功,表示成功,-1表示失敗。表示失敗。n二、建立和斷開(kāi)與數(shù)據(jù)庫(kù)的連接二、建立和斷開(kāi)與數(shù)據(jù)庫(kù)的連接n使用使用CONNECT建

9、立與數(shù)據(jù)庫(kù)的連接建立與數(shù)據(jù)庫(kù)的連接CONNECT是每個(gè)訪問(wèn)數(shù)據(jù)庫(kù)的是每個(gè)訪問(wèn)數(shù)據(jù)庫(kù)的PowerBuilder程序必須程序必須使用的語(yǔ)句,它的功能是通過(guò)事務(wù)對(duì)象將應(yīng)用程使用的語(yǔ)句,它的功能是通過(guò)事務(wù)對(duì)象將應(yīng)用程序與數(shù)據(jù)庫(kù)建立連接,連接成功后,其它序與數(shù)據(jù)庫(kù)建立連接,連接成功后,其它SQL語(yǔ)語(yǔ)句和數(shù)據(jù)窗口才能通過(guò)事務(wù)對(duì)象操作數(shù)據(jù)庫(kù)。句和數(shù)據(jù)窗口才能通過(guò)事務(wù)對(duì)象操作數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)nCONNECT語(yǔ)句的語(yǔ)法格式為:語(yǔ)句的語(yǔ)法格式為:CONNECT USING TransactionObject; 其中,其中,TransactionObject是事務(wù)對(duì)象,是事務(wù)對(duì)象,在執(zhí)行該語(yǔ)句前

10、,必須正確設(shè)置事務(wù)對(duì)象的數(shù)據(jù)在執(zhí)行該語(yǔ)句前,必須正確設(shè)置事務(wù)對(duì)象的數(shù)據(jù)庫(kù)連接屬性。大括號(hào)(庫(kù)連接屬性。大括號(hào)()表示該成分可以?。┍硎驹摮煞挚梢允÷?,省略時(shí)使用缺省的事務(wù)對(duì)象略,省略時(shí)使用缺省的事務(wù)對(duì)象disconnect USING TransactionObject;數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)三、提交與回滾事務(wù)三、提交與回滾事務(wù) n事務(wù)是數(shù)據(jù)庫(kù)管理系統(tǒng)完成一項(xiàng)完整工作的邏輯事務(wù)是數(shù)據(jù)庫(kù)管理系統(tǒng)完成一項(xiàng)完整工作的邏輯單位,數(shù)據(jù)庫(kù)管理系統(tǒng)保證一個(gè)事務(wù)要么被完整單位,數(shù)據(jù)庫(kù)管理系統(tǒng)保證一個(gè)事務(wù)要么被完整地完成(稱做提交),要么被徹底地取消(稱做地完成(稱做提交),要么被徹底地取消(稱做回滾)。

11、應(yīng)用程序可以通過(guò)回滾)。應(yīng)用程序可以通過(guò)COMMIT和和ROLLBACK語(yǔ)句控制事務(wù)操作。應(yīng)該注意的是,語(yǔ)句控制事務(wù)操作。應(yīng)該注意的是,事務(wù)和事務(wù)對(duì)象是兩個(gè)完全不同的概念。事務(wù)和事務(wù)對(duì)象是兩個(gè)完全不同的概念。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n1提交事務(wù)語(yǔ)句提交事務(wù)語(yǔ)句 COMMIT語(yǔ)句提交事務(wù),完成數(shù)據(jù)庫(kù)的物理語(yǔ)句提交事務(wù),完成數(shù)據(jù)庫(kù)的物理修改。執(zhí)行該語(yǔ)句后,將關(guān)閉所先前打開(kāi)的游標(biāo)修改。執(zhí)行該語(yǔ)句后,將關(guān)閉所先前打開(kāi)的游標(biāo)(CURSOR)和過(guò)程()和過(guò)程(PROCEDURE),并),并開(kāi)始一個(gè)新的事務(wù)。開(kāi)始一個(gè)新的事務(wù)。n COMMIT語(yǔ)句的語(yǔ)法格式為:語(yǔ)句的語(yǔ)法格式為:COMMIT USING

12、TransactionObject ; 其中,其中,TransactionObject更新數(shù)據(jù)庫(kù)操更新數(shù)據(jù)庫(kù)操作的事務(wù)對(duì)象名,缺省時(shí)使用事務(wù)對(duì)象作的事務(wù)對(duì)象名,缺省時(shí)使用事務(wù)對(duì)象SQLCA。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)nROLLBACK語(yǔ)句(回滾)語(yǔ)句(回滾) 語(yǔ)句放棄自上一個(gè)語(yǔ)句放棄自上一個(gè)COMMIT、ROLLBACK或或CONNECT語(yǔ)句以來(lái)的所有數(shù)據(jù)庫(kù)操作,關(guān)語(yǔ)句以來(lái)的所有數(shù)據(jù)庫(kù)操作,關(guān)閉所有的游標(biāo)和過(guò)程,并開(kāi)始一個(gè)新的事務(wù)。閉所有的游標(biāo)和過(guò)程,并開(kāi)始一個(gè)新的事務(wù)。 其語(yǔ)法格式為:其語(yǔ)法格式為: ROLLBACK USING TransactionObject ; 其中,其中,Tran

13、sactionObject是事務(wù)對(duì)象名,是事務(wù)對(duì)象名,缺省時(shí)使用事務(wù)對(duì)象缺省時(shí)使用事務(wù)對(duì)象SQLCA。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)四、單行檢索語(yǔ)句四、單行檢索語(yǔ)句select 語(yǔ)句語(yǔ)句n格式:格式:select col1,col2,coln into :var1,:var2,:varn from table_name where 條件表達(dá)式條件表達(dá)式 using 事物處理對(duì)象事物處理對(duì)象數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n例如:例如: integer stud_id string name,sex select stud_id,name,sex into :stud_id,:name,:sex fr

14、om student where name=”john”; 單行單行SELECT語(yǔ)句從數(shù)據(jù)庫(kù)中檢索一條記錄,語(yǔ)句從數(shù)據(jù)庫(kù)中檢索一條記錄,如果找到多條滿足條件的記錄,則產(chǎn)生錯(cuò)誤。事如果找到多條滿足條件的記錄,則產(chǎn)生錯(cuò)誤。事務(wù)對(duì)象的務(wù)對(duì)象的sqlcode取值為取值為100。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)五、五、insert語(yǔ)句語(yǔ)句ninsert into 表名表名 列名列名1,列名,列名2,列名,列名3 values(:v1,:v2,:vn)USING 事務(wù)對(duì)象事務(wù)對(duì)象;ninsert student(id,name,sex,math)values(:s_id,:s_name,f,89);ninse

15、rt student values(9969,jim,m,null,null,96,null)using sqlca;數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)六、六、update 語(yǔ)句語(yǔ)句 n該語(yǔ)句更新滿足條件的記錄的值。格式:該語(yǔ)句更新滿足條件的記錄的值。格式:nupdate 表名表名 set 列列1=:v1,列列2=:v2. Where 條件表達(dá)式條件表達(dá)式 Using 事務(wù)對(duì)象事務(wù)對(duì)象; Int m=0nUpdate student set math=:m where name like 王王%;數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)七、七、delete 語(yǔ)句語(yǔ)句n該語(yǔ)句從指定的表中刪除滿足條件的記錄。該語(yǔ)句

16、從指定的表中刪除滿足條件的記錄。nDelete from 表名表名Where 條件表達(dá)式條件表達(dá)式Using 事務(wù)對(duì)象事務(wù)對(duì)象;nInt m1=30,m2=20 Delete from student where math:m1 and math:m2;數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)八、檢查八、檢查SQL語(yǔ)句執(zhí)行情況語(yǔ)句執(zhí)行情況n 嵌入式嵌入式SQL語(yǔ)句的執(zhí)行有可能成功、也有可語(yǔ)句的執(zhí)行有可能成功、也有可能失敗,良好的編程風(fēng)格是對(duì)每條可執(zhí)行的能失敗,良好的編程風(fēng)格是對(duì)每條可執(zhí)行的SQL語(yǔ)句都檢查其執(zhí)行情況。每當(dāng)執(zhí)行一條語(yǔ)句都檢查其執(zhí)行情況。每當(dāng)執(zhí)行一條SQL語(yǔ)句后,與該語(yǔ)句相關(guān)的事務(wù)對(duì)象的語(yǔ)句后

17、,與該語(yǔ)句相關(guān)的事務(wù)對(duì)象的SQLCode屬性都給出一個(gè)值指示屬性都給出一個(gè)值指示SQL語(yǔ)句的語(yǔ)句的執(zhí)行是否成功:執(zhí)行是否成功:nSQLCode取值為:取值為: 0 最近一次最近一次SQL語(yǔ)句執(zhí)行成功語(yǔ)句執(zhí)行成功 -1 最近一次最近一次SQL語(yǔ)句執(zhí)行失敗語(yǔ)句執(zhí)行失敗 100 最近一次最近一次SQL語(yǔ)句沒(méi)有返回?cái)?shù)據(jù)語(yǔ)句沒(méi)有返回?cái)?shù)據(jù)數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n 當(dāng)當(dāng)SQLCode的值為的值為-1時(shí)(即最近一次時(shí)(即最近一次SQL語(yǔ)句執(zhí)行失敗時(shí)),事務(wù)對(duì)象的語(yǔ)句執(zhí)行失敗時(shí)),事務(wù)對(duì)象的SQLDBCode屬性中存放著數(shù)據(jù)庫(kù)廠商提供的錯(cuò)誤代碼、事務(wù)屬性中存放著數(shù)據(jù)庫(kù)廠商提供的錯(cuò)誤代碼、事務(wù)對(duì)象的對(duì)象的S

18、QLErrText屬性中存放著數(shù)據(jù)庫(kù)廠商屬性中存放著數(shù)據(jù)庫(kù)廠商提供的錯(cuò)誤信息,利用這兩個(gè)屬性,可以得到出提供的錯(cuò)誤信息,利用這兩個(gè)屬性,可以得到出錯(cuò)原因。下面是個(gè)檢查錯(cuò)原因。下面是個(gè)檢查SQL語(yǔ)句的執(zhí)行是否成語(yǔ)句的執(zhí)行是否成功的示例:功的示例:數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)int Emp_num = Integer(sle_1.Text) SELECT employee.Emp_Name, INTO :sle_Name.textFROM Employee WHERE Employee.Emp_num = :Emp_num;if Emp_tran.SQLCode = 100 then /未找到未找

19、到 MessageBox(查詢雇員查詢雇員, 未找到指定雇員未找到指定雇員) elseif Emp_tran.SQLCode 0 then /SELECT語(yǔ)句執(zhí)不成功語(yǔ)句執(zhí)不成功 MessageBox(數(shù)據(jù)庫(kù)錯(cuò)誤數(shù)據(jù)庫(kù)錯(cuò)誤, sqlca.SQLErrText, Exclamation!) /顯示出錯(cuò)信息顯示出錯(cuò)信息End If數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)14-2 動(dòng)態(tài)動(dòng)態(tài)SQL語(yǔ)句語(yǔ)句 n前面介紹的前面介紹的SQL語(yǔ)句如表名、列名、條件等語(yǔ)句如表名、列名、條件等在編譯時(shí)已經(jīng)確定,但有時(shí)候,我們需要在運(yùn)在編譯時(shí)已經(jīng)確定,但有時(shí)候,我們需要在運(yùn)行的時(shí)候才能確定我們需要查詢的表名、列名、行的時(shí)候才能

20、確定我們需要查詢的表名、列名、條件,甚至動(dòng)態(tài)的創(chuàng)建表,這時(shí)就需要使用動(dòng)條件,甚至動(dòng)態(tài)的創(chuàng)建表,這時(shí)就需要使用動(dòng)態(tài)態(tài)SQL語(yǔ)句。語(yǔ)句。n動(dòng)態(tài)動(dòng)態(tài)SQL語(yǔ)句有四種類型。語(yǔ)句有四種類型。n一、一、 類型一類型一 execute immediate sqlstatement using 事務(wù)對(duì)象事務(wù)對(duì)象; sqlstatement是一個(gè)內(nèi)含是一個(gè)內(nèi)含SQL語(yǔ)句的字符串。語(yǔ)句的字符串。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n例如:例如:String mysql,s_id,s_nameInt mM=93S_id=9969S_name=jimMysql=”insert into student (id,name,ma

21、th) values(”Mysql=mysql+s_id+”,”+name+”,”+string(m)+”)”Execute immediate :mysql;數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n在程序中動(dòng)態(tài)的創(chuàng)建表在程序中動(dòng)態(tài)的創(chuàng)建表String mysqlMysql=”create table teacher”&+”(t_id char(10) not null,”&+”t_name char(20) null.”&+”t_age integer null)”execute immediate :mysql using sqlca;數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n二、類型二

22、二、類型二n格式:格式:Prepare dynamicstagingarea from SQL表達(dá)式表達(dá)式 Using 事務(wù)對(duì)象事務(wù)對(duì)象;Execute dynamicstagingArea Using 變變量列表量列表;nDynamicstagingarea 是是powerscript提供的一種數(shù)據(jù)類型,用來(lái)存儲(chǔ)動(dòng)態(tài)提供的一種數(shù)據(jù)類型,用來(lái)存儲(chǔ)動(dòng)態(tài)SQL語(yǔ)語(yǔ)句所用的信息,通常我們使用預(yù)定義的全局變句所用的信息,通常我們使用預(yù)定義的全局變量量SQLSA,不用另外定義。,不用另外定義。n利用這種動(dòng)態(tài)的利用這種動(dòng)態(tài)的SQL語(yǔ)句用語(yǔ)執(zhí)行數(shù)據(jù)操作語(yǔ)句用語(yǔ)執(zhí)行數(shù)據(jù)操作語(yǔ)句(例如定義表、刪除表等)以及插入

23、、更語(yǔ)句(例如定義表、刪除表等)以及插入、更新和刪除記錄。新和刪除記錄。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)Int mString s_id,s_name,sqlstrSqlstr=“insert into student (id,name,math) values (?,?,?)”P(pán)repare sqlsa from :sqlstr using sqlca;M=97S_id=”9969”S_name=”jim”Execute sqlsa using :s_id,:s_name,:math; 當(dāng)涉及的參數(shù)及類型較多時(shí),用類型一需要當(dāng)涉及的參數(shù)及類型較多時(shí),用類型一需要較多的轉(zhuǎn)換函數(shù),字符串的構(gòu)造相當(dāng)復(fù)

24、雜,用類較多的轉(zhuǎn)換函數(shù),字符串的構(gòu)造相當(dāng)復(fù)雜,用類型二方法比較簡(jiǎn)潔。型二方法比較簡(jiǎn)潔。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n實(shí)驗(yàn)五:實(shí)驗(yàn)五:n 包含三個(gè)包含三個(gè)PB對(duì)象對(duì)象 1. 應(yīng)用對(duì)象應(yīng)用對(duì)象mypbex。主要完成打開(kāi)主窗口,。主要完成打開(kāi)主窗口,在退出應(yīng)用程序時(shí),斷開(kāi)與數(shù)據(jù)庫(kù)的聯(lián)接。在退出應(yīng)用程序時(shí),斷開(kāi)與數(shù)據(jù)庫(kù)的聯(lián)接。 2. 登錄窗口登錄窗口w_login(respond!,主要根,主要根據(jù)用戶輸入的密碼和口令來(lái)連接數(shù)據(jù)庫(kù),根據(jù)連據(jù)用戶輸入的密碼和口令來(lái)連接數(shù)據(jù)庫(kù),根據(jù)連接數(shù)據(jù)庫(kù)的結(jié)果,來(lái)確定是否顯示主窗口。接數(shù)據(jù)庫(kù)的結(jié)果,來(lái)確定是否顯示主窗口。n 該窗口有兩個(gè)按鈕,該窗口有兩個(gè)按鈕,“確定確

25、定”來(lái)完成與數(shù)據(jù)來(lái)完成與數(shù)據(jù)庫(kù)的連接,并根據(jù)連接的結(jié)果,來(lái)判斷是否使主庫(kù)的連接,并根據(jù)連接的結(jié)果,來(lái)判斷是否使主窗口可見(jiàn),而窗口可見(jiàn),而“取消取消”按鈕則關(guān)閉應(yīng)用系統(tǒng)。按鈕則關(guān)閉應(yīng)用系統(tǒng)。n 該窗口有一個(gè)窗口函數(shù)該窗口有一個(gè)窗口函數(shù)wf_connect來(lái)完成來(lái)完成與數(shù)據(jù)庫(kù)的連接有兩個(gè)單行編輯器來(lái)輸入連接的與數(shù)據(jù)庫(kù)的連接有兩個(gè)單行編輯器來(lái)輸入連接的口令和密碼??诹詈兔艽a。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n3. 主窗口主窗口w_main(main!) 在打開(kāi)該窗口時(shí)首先顯示登錄窗口,待用戶登在打開(kāi)該窗口時(shí)首先顯示登錄窗口,待用戶登錄成功后才顯示主窗口。錄成功后才顯示主窗口。(1)在在w_login中聲

26、明一個(gè)對(duì)象函數(shù)中聲明一個(gè)對(duì)象函數(shù)wf_connect()sqlca.dbms=ODBCIF sle_password.text= then return -1sqlca.dbparm=connectstring=DSN=STUDENT;UID=+userid +;PWD=+ password +connect using sqlca;return sqlca.sqlcode數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)n(2)w_login的確定按紐的的確定按紐的clicked事件中事件中ifwf_connect(sle_userid.text,sle_password.text)0 thenmessagebox(連接數(shù)據(jù)庫(kù)錯(cuò)誤連接數(shù)據(jù)庫(kù)錯(cuò)誤!,連接失

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論