pb中不使用游标读取结果集中的数据

jjyyyyyyjj 2009-06-01 07:21:46
如题,现在客户用sql server 2000检测工具进行监控发现,我写的PB程序一用select查询了结果集,用游标将结果集中的数据一行一行读入datawindow后,客户数据库服务器的CPU占用率非常高(我的游标有时只在结果集中读20来条记录,而客户数据库服务器的CPU往往占16%以上的资源),请高手指点一下,我现在不想用游标进行结果集进行查询,还有一个问题,按PB书上说,游标读取的结果集不是保存在本机上的吗,也就是说,我用SELECT查询客户数据库服务器,当我SELECT查询完后,结果集应该就存在我本机上,我再用游标去进行查询只不过是对我数据缓冲区中结果集进行查询,怎么现在看起来不是这样的,怎么还在客户数据库中去读呢?
...全文
104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2009-06-01
  • 打赏
  • 举报
回复
用数据窗口来代替游标,select语句可以实现,数据窗口肯定也可以

如果select语句是动态的,那数据窗口你也用动态即可


建议用数据窗口,出错容易分析,用datastore也可以,但出错时不容易分析。

请参考

http://blog.csdn.net/lzp_lrp/archive/2009/06/01/4231634.aspx

中的第三条
wag_enu 2009-06-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 newease 的回复:]
建议使用datastore 代替游标


数据存储 DataStore 对象
数据存储对象实际上就是去掉了可视特征的数据窗口控件 除了可视特征之外 数据
存储对象与数据窗口控件的功能和用法相同 因此 它们有许多相同的属性 事件和函数
为了支持数据存储对象的打印输出功能 该对象也提供了一些完成这项功能的事件和函

[/Quote]

支持,用 DataStore 代替游标.
jjyyyyyyjj 2009-06-01
  • 打赏
  • 举报
回复
谢谢
newease 2009-06-01
  • 打赏
  • 举报
回复
建议使用datastore 代替游标


数据存储 DataStore 对象
数据存储对象实际上就是去掉了可视特征的数据窗口控件 除了可视特征之外 数据
存储对象与数据窗口控件的功能和用法相同 因此 它们有许多相同的属性 事件和函数
为了支持数据存储对象的打印输出功能 该对象也提供了一些完成这项功能的事件和函
newease 2009-06-01
  • 打赏
  • 举报
回复
用数据窗口代替 SQL 语句
  通常,为了获得某些数据,采用数据窗口和 SQL 语句都是可行的,但是PB 对数据窗口和 SQL 语句采用不同的处理机制,因此,具有不同的效率。
  例:为里检索电话档案中的用户名,可以利用 SQL 语句,将所有的数据检索到一个多行编辑中,也可以检索到一个数据窗口中。
  如果使用第一种方法:
  首先定义一个游标:
    DECLARE CUR CURSOR FOR
    SELECT "DA_DH"."HM"
    FROM "DA_DH";
  然后可以:
    STRING stxt[],st
    int li
    open cur
    do li = li + 1
    fetch cur
    into :stxt[li] ;
    st=st+stxt[li] + "~r~n"
    loop while stxt[li]<>""
    close cur;
    mle_1.txt = st
  也可以使用第二种方法:
  dw_1.settransobject(sqlca)
  dw_1.retrieve()
  利用 POWERBUILDER PROFILER 工具进行检查,对比两种方法所需时间如下
  方法     所需时间 (百分之一秒)
  SQL 语句   100.9857
  数据窗口   49.0133
  由于数据窗口或DATASTORE使用了标准的内嵌代码,而不是由开发人员进行全部编码,同时编译执行的速度比解释执行的速度快的多,因此在开发过程中应尽量使用数据窗口和DATASTORE.即使是必须用SQL语句的时候,也应该尽量将它们定义为存储过程(特别是在多用户的环境中),以提高应用程序的性能. 
sjlion 2009-06-01
  • 打赏
  • 举报
回复
同志们都说了不少了,我就不多说了,大家吃好喝好啊!
peixun 2009-06-01
  • 打赏
  • 举报
回复
用数据窗口或者datastore取不就可以了.pb数据窗口查询都经过优化的.速度很快

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧