第14章 嵌入式SQL语言1.ppt
上传人:sy****28 上传时间:2024-09-15 格式:PPT 页数:30 大小:266KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

第14章 嵌入式SQL语言1.ppt

第14章嵌入式SQL语言1.ppt

预览

免费试读已结束,剩余 20 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第14章嵌入式SQL语言14-1嵌入式SQL语句以前介绍的SQL语言是作为独立语言在终端交互方式下使用的。这是面向集合的描述性语言,是非过程性的。即大多数语句都是独立执行,与上下文无关的。而许多事务处理应用都是过程性的,需要根据不同的条件来执行不问的任务,因此单纯用SQL语言是很难实现这类应用的。在PB中由于拥有功能强大的数据窗口,使得对数据库的操作一般都由数据窗口完成。然而数据窗口也不是万能的(比如程序中连接数据库就必须通过嵌入式SQL来完成),有时候,在程序中我们往往需要对数据库进行读取或修改一行数据,需要动态的查询一些数据,查询条件由在程序中动态设定,这时使用SQL语句就显得灵活方便。针对这类应用需求,PowerScript提供了一整套嵌入式SQL语句。利用嵌入式SQL语句,我们能够在程序中灵活地操纵数据库。PowerScript支持在程序中使用嵌入式SQL语句。实际上,对这类语句,PowerBuilder在将其发送到DBMS之前,并不做任何处理,而由DBMS完成相应操作,最后PowerBuilder得到处理结果。在程序中书写SQL语句的格式为:SQL语句;整个SQL语句可以写在一行,也可以写成更易理解的多行格式,只要在语句结束处放上一个分号(;)即可。在SQL语句中可以使用常量或合法的变量,但使用变量时须在变量前加个冒号(:)(通常称做绑定变量或引用变量),多个变量或常量之间用逗号(,)分隔。例如:INSERTINTOEmployee(Emp_nbr,Emp_name)VALUES(:EmpNbr,"李明");其中,Employee是表名,Emp_nbr、Emp_name是列名,EmpNbr是程序说明的变量,整个语句的意思是在表Employee中插入一条记录,该记录Emp_nbr列的值为变量EmpNbr中存放的值,列Emp_name的值为“李明”。一、嵌入式的SQL语句嵌入式的SQL语句执行后可能失败也可能成功。良好的编程风格应对每条SQL语句的执行结果进行检查。执行结果存放在事务对象的SQLCODE当中,0表示成功,-1表示失败。二、建立和断开与数据库的连接使用CONNECT建立与数据库的连接CONNECT是每个访问数据库的PowerBuilder程序必须使用的语句,它的功能是通过事务对象将应用程序与数据库建立连接,连接成功后,其它SQL语句和数据窗口才能通过事务对象操作数据库。三、提交与回滚事务1.提交事务语句COMMIT语句提交事务,完成数据库的物理修改。执行该语句后,将关闭所先前打开的游标(CURSOR)和过程(PROCEDURE),并开始一个新的事务。COMMIT语句的语法格式为:COMMIT{USINGTransactionObject};其中,TransactionObject更新数据库操作的事务对象名,缺省时使用事务对象SQLCA。ROLLBACK语句(回滚)语句放弃自上一个COMMIT、ROLLBACK或CONNECT语句以来的所有数据库操作,关闭所有的游标和过程,并开始一个新的事务。其语法格式为:ROLLBACK{USINGTransactionObject};其中,TransactionObject是事务对象名,缺省时使用事务对象SQLCA。四、单行检索语句select语句例如:integerstud_idstringname,sexselectstud_id,name,sexinto:stud_id,:name,:sexfromstudentwherename=”john”;单行SELECT语句从数据库中检索一条记录,如果找到多条满足条件的记录,则产生错误。事务对象的sqlcode取值为100。五、insert语句六、update语句七、delete语句八、检查SQL语句执行情况intEmp_num=Integer(sle_1.Text)SELECTemployee.Emp_Name,INTO:sle_Name.textFROMEmployeeWHEREEmployee.Emp_num=:Emp_num;ifEmp_tran.SQLCode=100then//未找到MessageBox("查询雇员","未找到指定雇员")elseifEmp_tran.SQLCode<0then//SELECT语句执不成功MessageBox("数据库错误",sqlca.SQLErrText,Exclamation!)//显示出错信息EndIf14-2动态SQL语句例如:Stringmysql,s_id,s_nameIntmM=93S_id=’9969’S_name=’jim’Mysql=”insertintostudent(id,