上海市高等教育自学考试
计算机网络专业(独立本科段)
《数据库技术》实践性环节考核大纲
(复旦大学主考,2005年修订)
一、考核目标
1. 具有熟练使用PowerBuilder 9.0建立本地数据库和基本表的能力。
2.掌握使用PowerBuilder 9.0建立数据库应用程序的方法。
二、运行环境
1. 平台:Windows 2000
2. PowerBuilder 9.0 软件
三、考核方式
实行闭卷考核。
四、考核时间和日期
上机考核每次为1小时;考核日期另行规定。
五、考核范围
1. 数据库的基本操作
建立数据库;连接数据库;建立表、主码、外码;
数据插入、查询、删除和修改;建立视图。
2. 建立数据库应用程序
建立工作空间、目标、应用;建立数据窗口对象;
建立主窗口(内含数据窗口、命令按鈕、静态文本框和单行编辑器等控件);
书写脚本;运行应用程序。
六、上机样题
(一)上机题目
在PowerBuilder9.0环境中完成下面两个任务:
•建立一个有关学生、课程、选修等有关信息的数据库;
•建立有关数据浏览、插入、查找、修改和删除等操作的应用程序及界面。
(二)操作步骤 (应严格按照下列步骤操作)
1. 建立数据库newdb (数据库文件newdb.db必须保存在C:\temp目录下)。
(自动连接数据库,ODBC数据源名也为newdb)。
2. 在数据库newdb中建立三张表:
s(sno,sname,age,sex)
c(cno,cname,teacher)
sc(sno,cno, grade)
上述属性中,age和grade为smallint型,其余均为char型。
在表s中,主码是sno; 在表c中,主码是cno;
在表sc中,主码是(sno,cno),外码有两个:sno和cno。
请分别为这三个表输入下列记录:
s表: c表: sc表:
s1 wen 18 m c1 pascal shi s1 c1 95
s2 bao 25 f c2 basic lou s1 c2 90
s3 li 20 f c3 c ma s1 c3 85
s4 he 22 m c4 c++ men s1 c4 80
s2 c4 75
3. 建工作空间 (C:\temp\student.pbw)
建目标 (C:\temp\student.pbt)
建应用 (C:\temp\student.pbl)
4. 在应用中建立三个数据窗口对象d_s、d_sc、d_c,分别显示三个表s、sc、c
的数据。
5. 在应用中建立主窗口w_main,主窗口中应包含:
•三个数据窗口控件(dw_1、dw_2、dw_3):分别显示表s、表sc、表c的数据。
•七个命令按钮控件。
•一个静态文本控件:放“输入数据”字样。
•一个单行编辑器控件(sle_1):用于输入数据,以便进行查找和修改。
程序的主界面如下:
6. 在应用各对象中书写脚本,使该应用具有下列功能:
① 应用运行开始时,出现w_main窗口,其中三个数据窗口控件中内容为空白。
② 点击“BROWSE”按钮,显示表s的内容,并可浏览。
③ 点击表s时,显示表sc和表c的内容,并可浏览。
④ 点击表c(右面一个表)时,能把三个表置为空白。
⑤ 点击“INSERT_SC”按钮,可在sc表中插入一条记录,内容请自定;
再点击“OK”按钮,可把这条记录插入数据库中。
⑥ 点击“DELETE_SC”按钮,可在sc表中删除当前记录;
再点击“OK”按钮,可把这条记录从数据库中删除。
⑦ 在单行编辑器中输入一个整数(譬如5)后,点击“UPDATE_SC”按钮,
可将sc表当前记录的成绩值增加这个整数值(5);
再点击“OK”按钮,可把这条记录的修改写入数据库中。
⑧ 在单行编辑器中输入一个学号(譬如s1)后,点击“QUERY_SNO”按钮,
可在s表和sc表中显示该学生情况和其所学课程情况。
⑨ 点击“EXIT”按钮,返回(退出应用)。
7.运行应用student。
8.据考场规定的方法,把C:\temp目录下的内容发送到服务器的存储器中。
(三)参考答案 (编写脚本)
1.在应用student.pbl的open事件中写脚本:
SQLCA.DBMS="ODBC" //数据库厂商的名称
SQLCA.AutoCommit=False //定义程序是手工提交事务
SQLCA.DBParm="ConnectString=′DSN=newdb′" //DBMS所需的额外信息
/*上述三条可从它处复制、粘贴过来*/
connect; //连接数据源newdb!
open(w_main) //打开主窗口w_main
2.在主窗口w_main的各个对象中书写脚本:
① 在主窗口w_main的open事件中写脚本:
dw_1.settransobject(sqlca) //给数据窗口控件dw_1设置通讯区域sqlca
dw_2.settransobject(sqlca) //给数据窗口控件dw_2设置通讯区域sqlca
dw_3.settransobject(sqlca) //给数据窗口控件dw_3设置通讯区域sqlca
sle_1.setfocus() //将焦点设置到控件sle_1
② 命令按钮BROWSE的Clicked事件:
dw_1.retrieve() //从数据库的s表中检索全部数据
③ 命令按钮INSERT_SC的Clicked事件:
dw_2.insertrow(0) //在sc表的尾部插入一行
dw_2.scrolltorow(dw_2.rowcount()) //把指定行设置为当前行
dw_2.setfocus() //将焦点设置到控件dw_2
④ 命令按钮DELETE_SC的Clicked事件:
dw_2.deleterow(0) //从数据库的sc表中删除当前行
⑤ 命令按钮UPDATE_SC的Clicked事件:
int g1,g2
g1=integer(sle_1.text) //取单行编辑器中的整数
g2=dw_2.GetItemNumber(dw_2.GetRow(),3) //取当前记录的原grade值
dw_2.SetItem(dw_2.GetRow(),3,g2+g1) //在原grade值上增加g1值
⑥ 命令按钮OK的Clicked事件:
if dw_2.update()=1 then //将修改传送到数据库,成功否
commit; //传送成功,事务提交
else
rollback; //传送不成功,事务回退
end if
⑦ 命令按钮QUERY_SNO的Clicked事件:
string query
dw_3.reset() //清除数据窗口控件dw_3中的所有行
query="sno='"+sle_1.text+"'" //设置过滤条件
dw_1.setfilter(query) //修改dw_1的过滤条件
dw_1.filter() //过滤数据
dw_1.retrieve() //从s表中显示检索到的数据
dw_2.setfilter(query) //修改dw_2的过滤条件
dw_2.filter() //过滤数据
dw_2.retrieve() //从sc表中显示检索到的数据
sle_1.setfocus() //将焦点设置到控件sle_1
⑧ 命令按钮EXIT的Clicked事件:
close(parent) //关闭按钮所在的窗口
⑨ 数据窗口控件dw_1的Clicked事件:
dw_2.retrieve() //从数据库的sc表中检索全部数据
dw_3.retrieve() //从数据库的c表中检索全部数据
⑩ 数据窗口控件dw_3的Clicked事件:
string query
dw_1.reset() //清除数据窗口控件dw_1中的所有行
dw_2.reset() //清除数据窗口控件dw_2中的所有行
dw_3.reset() //清除数据窗口控件dw_3中的所有行
query="" //置过滤条件为空
dw_1.setfilter(query) //修改dw_1的过滤条件
dw_1.filter() //过滤数据
dw_2.setfilter(query) //修改dw_2的过滤条件
dw_2.filter() //过滤数据
sle_1.text="" //置单行编辑器为空
sle_1.setfocus() //将焦点设置到控件sle_1
(四)程序运行结果
程序编制完成以后,单击PowerBar上的Run按钮就可以运行程序了,程序界面如下所示。
(五)系统中各对象之间的联系示意图
附件下载:
《数据库技术》实践性环节考核大纲(2005)