当前位置: 代码迷 >> PB >> [转帖]关于PB编程的一点经验,该如何解决
  详细解决方案

[转帖]关于PB编程的一点经验,该如何解决

热度:43   发布时间:2016-04-29 09:05:21.0
[转帖]关于PB编程的一点经验
原文:http://bbs.51cto.com/viewthread.php?tid=409234 
 PowerBuilder是快速有效的开发工具,在程序实现过程灵活 
多样,下面介绍一下在开发高校产品过程中积累的一些经验。 
一、处理 SQL 语句 

1、缓冲 SQL 语句 
  在应用程序中,有时需要反复调用同一组 SQL语句, 
在这种情况下,可以通过在应用中为这些 SQL 建立缓冲区来 
提高执行性能。 
  在缺省情况下,SQL 语句的缓冲区是关闭的,你可以 
通过如下语句打开它: 
  SQLCACHE = n 
  n 表示装入缓冲区的 SQL 语句数量(缺省为0)。 
  例如: 
  dw_1.SetTransObject(sqlca) 
  SQLCA.dbParm = "SQLCache = 0" 
  dw_1.retrieve() 

  如果将上例的 "SQLCache = 0" 改为 "SQLCache = 25", 
此句的执行效率将提高五分之一左右。但应注意缓冲区的大小, 
否则也将影响程序执行的性能。 
  注:此方法对用 ODBC 和 ORACLE 连接的数据库非常有效。 

2、捆绑变量 
  请看下例: 
  SQLCA.DBPARM = "DISABLEBIND=1" 

  INSERT INTO DA_DH VALUES("1","河南0") 
  INSERT INTO DA_DH VALUES("2","河南1") 
  INSERT INTO DA_DH VALUES("3","河南2") 
  INSERT INTO DA_DH VALUES("4","河南3") 
  INSERT INTO DA_DH VALUES("5","河南4") 
  INSERT INTO DA_DH VALUES("6","河南5")  

  这里未使用捆绑变量,在插入是 PB 将重新处理每个带有 
  新值的SQL语句。如果将上例改为: 
  SQLCA.DBPARM = "DISABLEBIND=0" 

  INSERT INTO DA_DH VALUES("1","河南0") 
  INSERT INTO DA_DH VALUES("2","河南1") 
  INSERT INTO DA_DH VALUES("3","河南2") 
  INSERT INTO DA_DH VALUES("4","河南3") 
  INSERT INTO DA_DH VALUES("5","河南4") 
  INSERT INTO DA_DH VALUES("6","河南5")  

  则系统将把 INSERT 语句按如下格式进行处理: 
  INSERT INTO DA_DH VALUES(?,?) 
  其中 "?" 称为占位符。系统性能将有所增强。 
3、用数据窗口代替 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 语句的时候,也应该尽量 
将它们定义为存储过程(特别是在多用户的环境中),以提高 
应用程序的性能. 

二、数据窗口的编程和执行 

数据窗口是PB最值得被称道的, 其具有如下特点: 
1. 多种显示方式. 
2. 多种编辑方式. 
3. 使用方法简单. 
4. 具有多种报表形式. 
5. 可实现屏幕滚动. 
6. 可实现数据的有效性校验. 
7. 执行性能显著提高. 
8. 编程工作变少. 
9. 可以在数据窗口内部实现数据库的更新. 

下面, 我将介绍一些用于提高数据窗口性能的技术. 
  相关解决方案