PB开发Sybase数据库应用技巧点滴

  • 来源: 互联网 作者: 若水   2008-03-19/10:17
  • PB开发Sybase数据库应用技巧点滴
    段秀华 01-4-28 上午 10:45:40

    PowerBuilder(PB)是一种跨平台的且功能强大、性能优异的开发工具。在客户端/服务器系统结构的应用模式中,作为客户端的一种面向对象的可视化设计工具,在与数据库相连接操作的系统中得到较为广泛的应用。笔者在使用PB开发Sybase数据库应用,建立企业管理信息系统的过程中,积累了一点经验和技巧,现将其中的一部分在此做点介绍,或许能够对朋友们有点启发和帮助。? 一、PowerBuilder与Sybase SQL Server的连接? 若在连接时出现问题,必须要冷静多思考。首先要检查客户端的情况,确认Open Client已经安装,并正确配置。要注意OPen Client必须与PowerBuilder同为32位,或同为16位。PB与Sybase连不上,常见的几种错误现象及处理方法说明如下:1.已连接上Sybase数据库,但在PB的数据库(database)画板中却看不到用户已经定义过的表。此时可打开isql或Sybase Advantage,用"sa"登录到"master"数据库,执行pbsyc.sql脚本文件(该文件位于PB安装盘的server目录)即可。值得一提的是,对Sybase Adaptive Server的版本号要加以注意,根据资料对有的相关项进行点改动。2.在打开PB的项目画板(Project)或库画板(Library)时,出现错误信息提示:"cannot locate source management dll"。这个问题是因为在安装PB时,选择了安装版本控制软件(如PVCS)的接口,实际上该用户的机器上并未安装相应的版本控制软件。解决方法: 在PB的设置中,将版本控制软件的接口去掉,具体操作步骤是,可在PB.ini文件中,找到[Library]节,将"SourceVendor= ..."这一行注释去掉。3.数据库连接正常,但打开用户表时若该表中有汉字则出现乱码。这个问题通常是由于客户端的缺省字符集设置和服务器端的字符集设置不一致,应修改locales.dat文件(该文件位于Sybase安装目录的locales子目录下)。如果在Windows95/98操作系统下,可修改[NT]节下的相关内容;若操作系统平台是Windows3.x,则修改[win3]节下的内容。在此节有一行文本为locale=default,us_english,is0_1,则说明客户端的缺省字符集设为iso_1。开发中文管理信息系统一般建议将字符集改为cp85o,在服务器端必须要做相应的调整。? 二、PB编程的几点技巧? 1.在数据窗口(Datawindow)中实现数据列自动折行。PB软件在市场上受用户欢迎的原因之一,就是它的数据窗口功能很强,而且方便应用。在使用Datawindow时,常会遇到某列的数据太长,不能同时显示全部的情况。若采用自动水平滚动,操作起来又不够简便。有一种方法能实现列数据多行显示(自动折行)。具体步骤如下:①.在Datawindow Panter中打开此DataWindow,在需设定自动折行的列上双击鼠标,弹开此列的属性窗口。点Position标签,选中Autosize Heigh多选框; 再选择Edit标签, 不选中Auto HorzScroll多选框;单击OK按钮,保存所做的修改。②.点中Detail Band(即写有Detail的灰色长带),单击鼠标右键,选择Properties...菜单项,选中Autosize Height多选框,单击OK按钮,保存所做的修改。2.在数据窗口(Datawindow)中用Enter键代替Tab键在字段间移动。其基本做法是: 选中该数据窗口,定义一用户事件,在弹出的用户事件定义窗口中,将Event ID与pbm_dwnprocessenter 相关联,在该事件的脚本中增加下面两行语句:Send(Handle(this),256,9 Long(0,0)) (向系统发出处理TAB键的消息)return 1 (忽略Enter键接下来应进行的缺省处理)3.选用Grid数据窗口方式时避免表头上方也出现表格线。用Grid数据窗口方式能够实现表格式报表输出,但是如在表头上方不加以控制或处理,它将出现Detail Band中各数据列的表格线,这是我们所不需要的。解决问题的参考方法是:①.可在Header Band中的表头上方增加一文本框,让该文本框足够宽且能覆盖所有的数据列, 同时将垂直长度调整Header Band中的表头上部平齐。②.在文本框的Properties...窗口中,将该文本框的显示内容清为空,在Font标签页中将字体的背景颜色(Background)设置为与数据窗口的背景色相同,并在Position标签页中将其Layer(层次)修改为Foreound,单击OK按钮,马上就能看出效果.

    一、EAServer常见问题

    1. 什么是EAServer?
       EAServer是Sybase 公司提出的针对电子商务应用的解决方案,它为用户提供全面的企业级Web、分布式和客户/服务器应用的解决方案,是英文Sybase Enterprise Application Server的缩写。
     
    2. 什么是JaguarCTS和PowerDynamo?
       Jaguar CTS(Component Transaction Server)和PowerDynamo是Sybase电子商务解决方案EAServer的两个主要服务器产品。Jaguar CTS是组件事务服务器,是Sybase新的适应性组件体系结构的中间层的核心产品,它面向的应用类型是多层结构下的企业级客户/服务器应用和Web OLTP应用,它是未来WEB应用发展的典型代表。Power Dynamo是将数据库与Web站点的管理统一起来的专业应用服务器产品,它的主要作用在于为创建数据驱动的Web应用提供广泛的应用服务集,提供Web服务器和数据库中间的一个解释性网关。

    3. Sybase的电子商务解决方案EAServer产品和目前常见的其他产品比较。
       其中应用服务器Power Dynamo相当于目前常见的Microsoft Active Server Pages (ASP)、Javasoft's Java Server Pages (JSP)以及PHP等;而组件事务服务器就相当于Microsoft的MTS。这些不同的产品各有千秋,但功能基本都是相似的。

    4. EAServer最新版本是多少?
       EAServer最新版本是2000年11月份推出的3.6.1版本,新版完全支持J2EE的架构,且已得到SUN授予的J2EE认证,其中包含:EJB 1.1、CORBA 2.2、Java Servlet 2.2、JSP 1.1、JTA 1.0、JDBC 2.0、JNDI 1.2、Java Mail 1.1等
     
    5. EAServer的运行平台是什么?
       目前最新的EAServer3.6版本主要是提供Windows NT和Sun Solaris平台,而EAServer 3.5版本则可在其他UNIX平台上运行,包含HP和Linux等。但在EAStudio产品家族中的PowerJ和PowerBuilder以及PowerSite等目前只有Windows运行平台。

    6. EAServer支持的协议标准有那些?

       分布式协议: IIOP、IIOPS、HTTP、HTTPS、TDS、CGI、ISAPI、NSAPI以及PowerDynamo专用协议。#p#分页标题#e#
       数据库驱动: OpenClient (Native Sybase)、Native Oracle 7&8、JDBC和ODBC等。
       组件模型: COM(DCOM)、Java/Servlet/JSP、EJB、PB NVO以及C和C++等。


    7. EAServer和CORBA之间的关系?
       EAServer支持CORBA架构,且CORBA在EAServer上扮演一个非常重要的角色。

    8. EAServer支持那些组件类型?
     ActiveX (or COM) components
     Java-CORBA components
     Enterprise JavaBeans (EJB 1.1)
     CORBA C++ components、C components
     PowerBuilder NVO's (Sybase proprietary)
     Java Servlet 2.2
     Java ServerPages (JSP 1.1)

    8. EAServer的开发工具有哪些?
       Sybase提供了以下开发工具:
       PowerJ來开发Java的环境,並且它直接支持EAServer;
       PowerBuilder可以用来开发Jaugar CTS的NVO组件;
       PowerSite用来进行网页设计和制作;
       PowerDynamo用来进行脚本的编写;
       Adaptive Server Anywhere数据库用来对页面进行管理等等。
       另一方面,也可以使用其他开发工具如VB/VC/Delphi/Jbuilder等等,只要最后将开发好的组件提交到EAServer上即可。
    首先配置需要被控制Jaguar CTS的监听器,将iiop监听器属性改为机器名,重新启动Jaguar CTS server。然后在要控制的机器上启动 Jaguar manager,在登陆时在host name中输入要控制的iiop监听器的名字即可。
     
    7. 什么是Connection caches,如何使用?
       在Client/Server结构中,对数据库的每一次存取都会产生一个连接,存取结束后再释放这个连接。在Jaguar CTS组件事务服务器中为了克服在Client/Server中的这个问题,引入了Connection Caches的机制。一般,前端应用程序请求Jaugar CTS中的组件来执行一些逻辑处理,但在同时间内,每个前端程序都未必同时需要连到数据库,因此JaguarCTS建立了一个存放连接数据库的缓冲池,当组件需要使用数据库连接时,JaguarCTS会以序地从pool中取出,当不再需要时再放回至pool中,这在实际情况下,可以让很多的前端应用共享几个数据库连接,提供响应性能。
      
    8.在Jaguar CTS中建立connection cache时,为何在server name中輸入ip地址建立的连接缓冲是无效的?
     
     无效是正常的。在Jaguar CTS中建立一个connection cache时,servername含义如下:
     (1).ODBC 模式,应填入ODBC的DSN (data source name)而非远端主机的IP地址;
     (2).JDBC/ODBC 模式,应该填入jdbc:odbc:EAS Demo DB V3;
     (3).JConnect 模式,应该填入jdbc:sybase:Tds:210.242.176.79:2638;
     (4).OCI模式,应该填入Oracle的TNS names。

    9. CTS中组件的生命周期是怎样的?
       NewInstance → Activation → Invoke Method → Invocation Complete → Deactivation → Destruction等。
     
    10.交易的管理有哪些?
       主要有:2-phase commit、DTC(Microsoft)、JTS(Java)和XA(Mainframe)。

    11.JaguarCTS在Linux的现状如何?
       目前JaguarCTS在Linux操作系统上的版本为3.5 beta版(2000 Apr),它只能在具有Native threads和需要BlackDown JDK上执行。

    三、PowerDynamo(页面引擎)问题
     
    1. PowerDynamo与Web server和数据库之间是如何协同工作的?
       在Web Server设定与PowerDynamo的连接后,PowerDynamo直接使用URL的格式, Web Server就会将前端页面的请求指向PowerDynamo。与后台数据库部分,即可利用 PowerDynamo的模版向导与connection的设定连接到数据库,这样可以使用内嵌的SQL语句(embed- SQL),在Server端执行后,经过ISAPI、NSAPI或 CGI等方式经由Web Server送回前端,也可首先PowerDynamop连接Jaguar CTS组件,由组件连接数据库。

    2. PowerDynamo能支持那些Web Server?
       PowerDynamo可以支持Personal Web Server、IIS、Netscape、Apache等各种Web Server。

    3. 在浏览器中如果直接输入URL为目录名称,则browser会显示WebSite的所有目录结构,该如何避免?
       改变PowerDynamo Web Site站点中system 目录下的 contview.ssc文件,即可避免上述结果。可以将该文件删除,也可以修改该文件内部结构,如下面的程序会将当前目录下的的index.stm传回给用户。
     <--SCRIPT
     curDoc = document.location;
     document.redirect = curDoc + "/index.stm";
     -->
       然后在每一目录下建立 index.stm文件。躲让,可以根据不同情况修改 contview.ssc文件以符合自己工作的需要。
     
    flyshi@cmmail.com


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多