📄 powerbuilder 使用数据存储代替游标.txt
字号:
PowerBuilder 使用数据存储代替游标
Datastore 是 PwerBuilder中不可视的数据窗口控制。与数据窗口相比除了视觉以外其他各个方面都极其相似。
由于datastore具有对数据的交互操作,所以用它来代替在程序中经常使用的游标Cursors. 使用datastore检索数据比游标的速度快,并对数据的分组变得容易,提高比较高级的过滤功能,在程序中不需要变量也可以访问数据,并且在PB中使编码变得相对简单。
使用datastore对数据也有缺点:
使用datastore时候必须有检索对应数据的数据窗口对象;
你使用后必须及时的释放datastore占用的内存空间,一面产生内存空洞;
下面举个简单的例子说明如何人在程序中使用游标和datastore进行查询数据,它们具有一曲同工之效:
1,下面是采用游标的方式取得可户信息的事例程序;
String ls_cust_code,ls_customer_name,ls_address
DECLARE lc_my_cursor CURSOR FOR
SELECT customers.cust_id,customers.cust_name,customers.cust_address
FROM customers ORDER BY cust_code;
OPEN lc_my_cursor;
FETCH lc_my_cursor INTO :ls_cust_code,:ls_customer_name,ls_address;
DO WHILE SQLCA.SQLCODE = 0
FETCH lc_my_cursor INTO :ls_cust_code,:ls_customer_name,:ls_address;
LOOP
CLOSE lc_my_cursor
2,采用Datastore实现上面同样的功能:
String ls_cust_code,ls_customer_name,ls_address
long ll_row,ll_row_count
datastore lds_dstastore
lds_datastore = CREATE datastore
lds_datastore.datao b j e c t = "d_customers"
lds_datastore.settranso b j e c t(sqlca)
lds_datastore.retrieve()
ll_row_count = lds_datastore.rowcount()
FOR ll_row = 1 to ll_row_count
ls_cust_code = lds_datastore.getitemstring(ll_row,"cust_id")
ls_cust_code = lds_datastore.getitemstring(ll_row,"cust_name")
ls_cust_code = lds_datastore.getitemstring(ll_row,"cust_address")
NEXT
DESTROY lds_datastore
说明:上面的数据窗口对象包括数据库中Customers表中的cust_id,cust_name,cust_address
列。以上是游标和datastore的转换,请广大网友借鉴。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -