|
Powerbuilder以其独特的体系结构,优异的性能,越来越受到广大软件开发人员的青睐。Powerbuilder所提供的许多技术,使用起来都令人得心应手,游标(Cursors)技术,便是其中之一。游标是一个与T-SQL
SELECT 语句相关的符号名,它使用户可逐行访问由SQL Server返回的结果集。游标允许程序对由查询语句SELECT返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作;提供对基于游标位置的表中的行进行删除和更新的能力。
一、游标的用法:
二、下面以一具体示例详细讲解游标的使用技术
示例环境为:欲将工程表Project中的工程名称name字段与列表控件相捆绑,以实现相关数据的动态刷新。
1. 创建一名为project的数据表: CREATE TABLE project ( id numeric(5),
name varchar(50)) ; 其中id为项目编号、name为项目名称。
2. 新建一窗口 w_project,在窗口画板工作区增加一名为ddlb_name的下拉式列表框(DropDownListBox)
3.在w_project的open事件中编写如下代码:
int li_id
string ls_name
//游标声明
declare lcur_name cursor for
SELECT name
FROM project;
//游标打开
open lcur_name;
if sqlca.sqlcode $#@60; 0 then
MessageBox ("DataBase Error!",
sqlca.sqlerrtext, exclamation!)
return
end if
ddlb_name.SetRedraw(false)
do while sqlca.sqlcode = 0
//提取
fetch lcur_name into :ls_name;
if sqlca.sqlcode = 0 then
//将提取的结果,逐行添加到下拉式列表框
ddlb_name.AddItem (ls_name)
elseif sqlca.sqlcode $#@60; 0 then
MessageBox ("DataBase Error", sqlca.sqlerrtext, exclamation!)
return
else
exit
end if
loop
ddlb_id.SetRedraw(true)
//关闭游标
CLOSE lcur_name;
//释放游标
DEALLOCATE CURSOR lcur_name;
由此可见,游标作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过它沟通起来。
|