end if
MessageBox(\提示\数据库连接失败!\Return //若失败,则返回,不再继续执行程序
//若连接成功,则打开主窗口 open(w_sql)
8、编写窗口w_sql的“增加”按钮的clicked事件代码: Open(w_add)
9、编写窗口w_add的“保存”按钮的clicked事件代码: string ls_id,ls_name,ls_sex date ld_birth
ls_id = Trim(sle_id.Text) ls_name = Trim(sle_name.Text) ls_sex = Trim(sle_sex.Text) ld_birth = Date(sle_birth.Text)
//用insert语句向数据库中插入数据 insert into \
(\
values( :ls_id,
:ls_name, :ls_sex,
:ld_birth );
//判断inset语句是否执行成功 if SQLCA.SQLCode <>0 then else
MessageBox(\提示\数据保存成功!\
29
MessageBox(\提示\数据保存失败!\ROLLBACK;//若失败,则回滚
Return //若失败,则返回,不再继续执行程序
end if
COMMIT;//若成功,则提交
10、编写窗口w_add的“关闭”按钮clicked事件代码: Close(parent)
11、运行调试程序
单击“增加”按钮,将弹出学生信息增加窗口,在各编辑框输入学生信息后,单击“保存”按钮,系统将给出提示信息,如图所示:
五、注意事项:
1、注意insert语句的写法。 2、注意编程规范。
3、学生严格遵守实验室的各项规章制度,配合和服从实验室人员管理。
六、练习项目及思考题:
1、如何使PowerBuilder应用程序和ASA数据库相连接?
30
实验项目十二 常见SQL语句之修改语句update的应用
一、实验目的和要求:
(一)目的:
1、熟悉SQLCode属性值的几种常见场合及代码。 2、会使用update语句。
(二)要求:
1、认真做好实验前的各项准备工作,熟悉实验内容和机器操作流程。 2、遵守实验室规章制度和实验课堂教学纪律。 3、认真完成实验任务,填写实验报告。
二、实验时数:2学时 三、实验器材:
PC机一台、PowerBuilder 11.5及PowerBuilder 11.5自带的SQL Anywhere 11.0(即ASA 11.0)数据库
四、实验内容或步骤:
(一)内容:用户在第一个打开窗口中输入学号,根据输入的学号在另外一个窗口中显示该生的详细信息,修改信息后将修改信息存入数据库中。 (二)步骤:
1、先建立好PowerBuilder基本框架。
2、新建ASA数据库“school”,在数据库“school”中建立表student,表结构如下图,并在表中插入多行数据。
其中,“student_id”是主键。
3、新建一个窗口对象,修改其title属性为“SQL练习”,保存时命名为w_sql。 4、在窗口w_sql中放置控件如下:
1个静态文本控件,修改其text属性为“学号”;
1个单行编辑框控件,修改其name属性为“sle_id”,删除Text属性的默认值“none”; 5个按钮控件,修改其text属性分别为“查询”、“删除”、“更新”、“增加”、“关闭”。
31
窗口布局完毕后,Layout视图效果如图:
5、新建一个窗口对象,修改其title属性为“更新”,在“WindowType”下拉列表框中选择“Popup!”,保存时命名为w_update。 6、在窗口w_update中放置控件如下:
四个静态文本控件,修改其text属性为:“学号”、“姓名”、“性别”、“出生日期”; 四个单行编辑框控件,修改其name属性为:“sle_id”、“sle_name”、“sle_sex”、“sle_birth”,删除Text属性的默认值“none”;
两个按钮控件,修改其text属性为“保存”、“关闭”。 窗口布局完毕后,Layout视图效果如图:
7、在系统树中双击打开应用对象,其open事件代码如下: //profile school,数据库连接参数设置 SQLCA.DBMS=\SQLCA.AutoCommit=false
SQLCA.DBParm=\connect; //执行连接数据库的操作 //判断连接动作是否成功
32
if SQLCA.SQLCode <>0 then end if
//若连接成功,则打开主窗口 open(w_sql)
8、编写窗口w_sql的“更新”按钮的clicked事件代码: string ls_id,ls_name,ls_sex date ld_birth
ls_id = Trim(sle_id.Text)
OpenWithParm(w_update,ls_id) //向w_update窗口传递ls_id参数 9、编写窗口w_update的open事件代码: string ls_id,ls_name,ls_sex date ld_birth
ls_id = Message.StringParm //Message.StringParm获得传递过来的字符串值 select \into :ls_name,
:ls_sex, :ld_birth
MessageBox(\提示\数据库连接失败!\Return //若失败,则返回,不再继续执行程序
from \
where \
if SQLCA.SQLCode = 100 then
MessageBox(\提示\数据库中没有该记录!\Return
elseif SQLCA.SQLCode < 0 then end if
33
MessageBox(\提示\数据库连接错误!\Return