《高级窗口控件》PPT课件.ppt_第1页
《高级窗口控件》PPT课件.ppt_第2页
《高级窗口控件》PPT课件.ppt_第3页
《高级窗口控件》PPT课件.ppt_第4页
《高级窗口控件》PPT课件.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第8章 SQL语句和游标,8.1SQL语句 8.2游标的使用 8.3SQL语句和游标编程实例 小 结,返回总目录,8.1SQL语句,8.1.1 SQL语句的作用 8.1.2 SQL语句的基本格式 8.1.3 SQL语句的应用举例 8.1.4 粘贴SQL语句,返回章目录,8.1.1 SQL语句的作用,PowerScript提供了一整套嵌入式SQL语句。利用嵌入式SQL语句,我们能够在程序中灵活地操纵数据库。PowerScript支持在程序中使用嵌入式SQL语句,并且支持在SQL语句中使用具体数据库管理系统(DBMS)特有的SQL语句、函数和保留字,返回本节录,8.1.1 SQL语句的作用,在程序

2、中书写SQL语句的格式为: SQL语句; 整个SQL语句可以写在一行,也可以写成更易理解的多行格式,只要在语句结束处放上一个分号(;)即可。在SQL语句中可以使用常量或合法的变量,但使用变量时需在变量前加个冒号(:)(通常称作绑定变量或引用变量),多个变量或常量之间用逗号(,)分隔。我们向“学生基本情况”表中插入数据项。事先创建好表,表名为“学生基本情况”。,返回本节录,8.1.2 SQL语句的基本格式,1.SELECT语句 单行SELECT语句从数据库中检索一条记录,如果找到多条满足条件的记录,则产生错误(后续章节将介绍读取多条数据库记录的游标方法)。其语法格式为 SELECT Fields

3、List INTO VarList FROM TableList WHERE Criteria USING TransactionObject;,返回本节录,8.1.2 SQL语句的基本格式,2.INSERT语句 用INSERT语句向数据库中插入一条记录。其语法格式为 INSERT INTO TableName(FieldName,.) VALUES(ValueOfField,.) USING TransactionObject;,返回本节录,8.1.2 SQL语句的基本格式,3.UPDATE语句 用UPDATE语句修改表中指定的数据。其语法格式为 UPDATE TableName SET F

4、ieldName=Value,FieldName=Value,. WHERE Criteria USING TransactionObject;,返回本节录,8.1.2 SQL语句的基本格式,4.DELETE语句 使用DELETE语句删除表中的数据。其语法格式为 DELETE FROM TableName WHERE Criteria USING TransactionObject;,返回本节录,8.1.3 SQL语句的应用举例,1.检查SQL语句执行情况 嵌入式SQL语句的执行有可能成功,也有可能失败,良好的编程风格对每条可执行的SQL语句都会检查其执行情况。每当执行一条SQL语句后,与该语

5、句相关的事务对象的SQLCode属性都给出一个值指示SQL语句的执行是否成功。SQLCode取值为: 0:最近一次SQL语句执行成功。 -1:最近一次SQL语句执行失败。 100:最近一次SQL语句没有返回数据。,返回本节录,8.1.3 SQL语句的应用举例,2.SQL语句的应用举例 建立一个应用。 连接数据库(MSS SQL Server)。 创建上表。 建立如图81所示界面。,返回本节录,8.1.4 粘贴SQL语句,SQL语句虽不难学,但要记忆十分清楚也并不容易。PowerBuilder提供了图形化生成SQL语句的工具画板,利用它能够用交互方式定义SQL语句并将其粘贴到程序中。PowerB

6、uilder的SQL语句画板能够构造三类语句:游标、非游标和过程。非游标SQL语句对应于单行SELECT、INSERT、UPDATE和DELETE语句。下面以构造SELECT语句为例说明基本操作过程,并扼要说明其他语句的粘贴方法。,返回本节录,8.1.4 粘贴SQL语句,粘贴过程如图812、图813、图814、图815、图816所示。 如图812所示,在脚本编辑窗口中单击鼠标右键选择要粘贴的语句。,返回本节录,8.1.4 粘贴SQL语句,如图813所示,选择表,返回本节录,8.1.4 粘贴SQL语句,在如图814所示的窗口中对选中表的字段进行选择。,返回本节录,8.1.4 粘贴SQL语句,单击

7、此时画板的“Design.Into Variables.”弹出如图815所示画面,返回本节录,8.1.4 粘贴SQL语句,输入程序变量,单击图上“OK”按钮提交返回结果,如图816所示。,返回本节录,8.1.4 粘贴SQL语句,在数据库画板中我们也可以对在编写程序时粘贴所需要的SQL语句,具体过程如下:双击图817中的一个图标 例如双击“SELECT”进入如图818所示的选择表窗口,返回本节录,8.1.4 粘贴SQL语句,单击“Open”按钮进入图819所示窗口,返回本节录,8.1.4 粘贴SQL语句,单击工具栏上的“Return”按钮进入图820,我们可以看到SQL语句。,返回本节录,8.1

8、.4 粘贴SQL语句,可以使用“Ctrl+L”得到如图821所示结果。,返回本节录,本节完,8.2 游标的使用,8.2.1 游标的含义及作用 8.2.2 游标的使用过程 8.2.3 声明游标(DECLARE语句) 8.2.4 打开游标(OPEN语句) 8.2.5 提取数据(FETCH语句) 8.2.6 关闭游标(CLOSE语句) 8.2.7 使用Where子句,返回章目录,8.2.1 游标的含义及作用,选取多行数据时必须定义游标。所谓游标可以理解成一个返回结果集合的指针,使用该指针可以对返回的结果逐条处理。事实上,DataWindow可以替代游标进行从后台数据库查询多条记录的复杂操作,但是,同

9、DataWindow和DataStore相比,游标也有其自身的优点,比如系统资源占用少,操作灵活,可根据需要定义变量类型,如全局、实例、局部类型和访问类型(如私有或公共)等,返回本节录,8.2.2 游标的使用过程,游标典型的使用过程一般为: (1)用DECLARE说明游标; (2)用OPEN语句打开游标; (3)使用FETCH语句读取一行数据; (4)处理数据; (5)判断是否已经读完所有数据,未读完时重复执行35步; (6)使用CLOSE语句关闭游标。 总之使用游标有四种基本的步骤:声明游标、打开游标、提取数据、关闭游标。下面分别介绍DECLARE、OPEN、FETCH、CLOSE语句。,返

10、回本节录,8.2.3 声明游标(DECLARE语句),像使用其他类型的变量一样,使用一个游标之前,首先应当声明它。游标的声明包括两个部分:游标的名称和这个游标所用到的SQL语句。 使用游标前需要用DECLARE语句说明游标。其语法格式为: DECLARE CursorName CURSOR FOR Select Statement USING TransactionObject; 其中,CursorName是游标的名称,可以使用任何有效的标识符来表示;SelectStatement是任何有效的SELECT语句;TransactionObject是事务对象名,缺省时使用SQLCA。,返回本节录,

11、8.2.4 打开游标(OPEN语句),游标声明后在其他操作之前,必须打开它,打开已经说明的游标并执行相应的SELECT语句。其语法格式为: OPEN CursorName; 其中CursorName是已经用DECLARE语句说明的游标名,返回本节录,8.2.5 提取数据(FETCH语句),当使用OPEN语句打开游标并在数据库中执行查询后,我们还不能立即利用查询结果集中的数据,必须用FETCH语句来读取数据。FETCH语句是游标使用的核心。一条FETCH语句一次可以将一条记录放入程序员指定的变量中。在DataWindow和DataStore中,执行了Retrieve()函数以后,查询的所有结果全

12、部可以得到;而使用游标,我们只能逐条记录得到查询结果。已经声明并打开一个游标后,我们就可以将数据放入任意的变量中。在FETCH语句中可以指定游标的名称和目标变量的名称,返回本节录,8.2.5 提取数据(FETCH语句),FETCH语句从游标中读取当前记录并把它保存到指定的变量中。当数据库支持下述用法时,还可以使用FETCH FIRST、FETCH PRIOR、FETCH LAST。FETCH语句的语法格式为: FETCH CursorName INTO HostVariableList; 其中,CursorName是OPEN语句打开的游标名;HostVariableList是与SELECT语句

13、中选择字段相对应的主变量列表。,返回本节录,8.2.6 关闭游标(CLOSE语句),CLOSE语句关闭先前打开的游标。其语法格式为: CLOSE CursorName; 其中CursorName是先前打开游标的名称。关闭游标后,就不能再使用FETCH语句从游标中读取数据了。下面是关闭游标的示例:CLOSE xhxm; 注意:在游标操作的最后,不要忘记关闭游标,要养成良好的编程习惯,以使系统释放游标占用的资源。,返回本节录,8.2.7 使用Where子句,DECLARE语句的作用只是定义一个游标,在OPEN语句中这个游标 才会真正地被执行。了解了这些,我们就可以很方便地实现这样的功能在DECLA

14、RE的W HERE子句中加入变量作参数,如下所示: Dec fenshu .定义分数变量fenshu=dec(ddlb1.text) DECLARE xhxm CURSOR FOR .声明游标SELECT xh,xm FROM chengjibiao WHERE shuxue=:fenshu;OPEN xhxm; .打开游标 tring xh,xm .定义学号、姓名变量 DO WHILE SQLCA.SQLCode=0 FETCH xhxm INTO:xh,:xm; .读取数据,返回本节录,8.2.7 使用Where子句,LOOP CLOSE xhxm; .关闭游标 同其他变量一样,我们也可以

15、定义游标的访问类型:全局、共享、实例或局部,游标变量的命名规则同其他变量一样。 如果连接的数据库管理系统支持存储过程,那么在PowerScript中就可以使用定义在数据库中的存储过程。,返回本节录,8.2.7 使用Where子句,使用存储过程的方法与游标十分类似:首先用DECLARE语句说明存储过程(其语法请参看联机帮助),然后用EXECUTE语句执行已说明的过程,再使用FETCH语句读取各条记录,最后用CLOSE语句关闭存储过程。 在PowerScript中使用存储过程前,应该首先在数据库中定义所需的存储过程。使用存储过程能够提高应用程序的执行效率。应该注意到,并非所有的数据库管理系统都支持

16、存储过程。 注意 打开游标或存储过程后,如果要使用COMMIT或ROLLBACK语句,必须十分小心,因为这两个语句将关闭游标或存储过程。,本节完,返回本节录,8.3 SQL语句和游标编程实例,例说明 本例将演示如何创建一个日用品管理系统登录窗口。通过对用户名和密码的验证进入系统。当密码输入错误时,提示有三次机会,当第三次还没有输入正确时,启动此系统将失败,其界面如图822所示。,返回章目录,8.3 SQL语句和游标编程实例,设计思路 本例中用户名下拉列表框使用游标从数据库中提取数据,用户名下拉列表框中的内容可以根据数据库内容的改变而变化;密码的验证是通过SQL语句对数据库中的用户名和密码的比较

17、,得出用户是否有权登录此系统。,返回本节录,8.3 SQL语句和游标编程实例,实现过程 1.连接数据库,创建表“PassWord”。主要字段有用户名、密码,如图823所示。下面的操作中所提取的数据将从该表中得到。 2.在工作区中创建窗口名称为:w Login系统登录打开的密码验证窗口。 3.为登录窗口添加如图822所示的控件:日用品管理系统静态文本(st1),用户名(st2),密码(st3),下拉列表(ddlb1),密码输入单行文本(sle1),确定按钮(cb1),取消按钮(cb2)。将各控件按图822所示布置。 4.代码的编写。,返回本节录,8.3 SQL语句和游标编程实例,(1)为窗口(w

18、 Login)定义变量(Instance Variables): Integer Enter number .记录登录次数变量 (2)为窗口(w Login)的OPEN事件编写脚本: String Name Enter Number=0 .记录登录次数变量 sle1.Text=ddlb1.SetFocus() .下面代码使用游标提取数据库中的数据添加到下拉列表框中DECLARE C1CURSOR FOR SELECT用户名FROM PassWord;OPEN C1; FETCH C1INTO:Name; Do While SQLCa.SQLCode=0 ddlb1.AddItem(Name)

19、FETCH C1INTO:Name; Loop CLOSE C1; .下列代码将单行文本与按钮1设为不可用If sle1.Enabled=TRUE Then sle1.Enabled= FALSE End if If cb1.Enabled=TRUE Then cb1.Enabled=FALSE End if,返回本节录,8.3 SQL语句和游标编程实例,(3)为下拉列表(ddlb1)的SelectionChanged事件添加代码: sle1.Enabled=TRUE c b1.Enabled=TRUE (4)选择所需要的用户名及输入密码之后就进入密码验证阶段(确定按钮的单击事件代码): Integer number .从数据库PassWord中验证用户名,密码是否正确,正确时number不为零 SELECT count()INTO:number FROM PassWord Where用户名=:ddlb1.Text and密码=:sle1.Text USING SQLCA; If SQLCA.SQLCode100Then If SQLCA.SQLCode=-1Then MessageBox(系统错误,登录失败!n错误代码为:+String(SQLCA.SQLDBCode)+n错误信息为:+SQLCA.SQLErrText+n请与系统员联系!,StopSign!),返回本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论