在PowerBuild函数中使用SQL语言在线教程

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 22:42:41

有时我们需要在程序中直接使用SQL语言直接操作数据库, 如读、写一条记录甚至多条记录,下面介绍一种方法,即在PowerBuild函数中使用嵌入式SQL语言:

  目的:在一个列表框中显示数据库中数据表中特定列的内容。

  函数参数设计:数据库表名,列名,事务名,列表框标志位,列表框名 。

  应用程序详细设计:

  1. 建立名为a_sqltest的应用对象放在sqltest库中

  2. 创建窗口对象,名称及其控件属性如表1所示

  表1. 窗口对象属性

对象/控件 属性 值
windows name
titlebar
type w-sql-test
“嵌入式sql函数演示”
main
singlelineedit name
auto hscroll
name
auto hscroll sle-table-name
true
sle-column-name
true
listbox name
vscroll bar
hscroll bar lb-data
true
true
checkbox name
text
checked cbx-list
“显示内容清除标记”
true
comamnd
button name
text cb-show
“显示"
static text name
text
name
text sle-1
数据库表名"
sle-2
数据库列名"

  3. 建立上述窗口函数,名称及其属性如下表2所示,参数分别表示数据库表名、列名、事务名及反映显示列表框是否在检索数据前清除上一次显示内容,函数返回所读取记录的总行数。

  表2. 嵌入式SQL函数属性

属性 值 数据类型
   name w-sql-test
   returns long
argument as-table-name string
argument as-column-name string
argument at-trans transaction
argument ab-data-clear boolean
argument alb-list-name listbox

  4. 把下列脚本写入函数,一般情况下SQL语句只可以从数据库中检索一条记录,但当需要一次读取多条记录时,就需要使用数据库游标。利用游标建立一个SQL语句的结果集(游标打开时发生),然后利用Fetch命令一次从结果集中取得一行数据。本函数基于参数传过来的数据库表名/列名建立一个Select语句,并声明一个游标,读取多行数据。在Fetch命令中,把数据库行数据放入变量ls-column中,注意在该命令中应在变量前加“:”以表明是变量而非列名。接着使用列表框函数Additem()把取到的行数据放入框中。循环执行直至事务对象的SQLcode指示有错误发生(取得所有数据)。最后关闭游标并把取到的行数返回给调用者。

   Long ll-rows-number

   String ls-column-name, ls-select

   //给字符串赋值,用于确定检索的数据库表及其列名

   ls-select = "Select " + as-column-name + " From " + as-table-name

   //声明一个数据库动态游标,存放检索的结果集

   DECLARE lc-cur DYNAMIC CURSOR FOR SQLSA;

   divPARE SQLSA FROM :ls-select;

   //如果列表框标志位为真则清空列表框

   If Ab-data-clear Then Alb-lis-name.Reset()

   //打开动态游标一次取一行数据

   OPEN DYNAMIC lc-cur;

   //获得第一行并把数据赋与字符串

   Fetch lc-cur Into : ls-column-name;

   //连续读取结果集中数据直到结束,并把数据加入到列表框中

   Do While at-trans.SQLCode = 0

ll_rows-number ++

Alb-list-name.AddItem (ls-column-name )

Fetch lc-cur Into : ls-column-name;

   Loop

   //关闭动态游标

   Close lc-cur;

   Return ll-rows-number

  5. 关闭并保存上述函数,在窗口“检索”按钮的clicked事件中写入下列脚本来调用上述函数

  Long ll-all-rows

  ll-all-rows = Wf-sql-test(sle-table-name.Text, &

  sle-column-name.Text, SQLCA , cbx-list.checked ,lb-data)

  6. 关闭并保存窗口,在应用对象中的Open事件中写入脚本以便打开上述窗口。Open (W-SQL-TEST)

  7. 存储应用对象, 然后运行程序。


Tags:

作者:佚名
分享到: 微信 更多