精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Powerbuilder>>PB开发Internet应用>>Web.SQL及其应用(6)

主题:Web.SQL及其应用(6)
发信人: pblover()
整理人: leitiger(2002-06-05 23:51:50), 站内信件
×⒃贖TS文件中使用Perl访问数据库

   

   可以在<SYB>和</SYB>标记对中使用Perl脚本语言。当客户浏览器请求包含
 Perl脚本的HTS文件时,Web.sql程序解释运行Perl脚本并将结果代替<SYB>块插
 入HTML语句流中传递给HTTP服务器。注意:在Perl脚本中,必须输出所有希望出
 现在客户浏览器上的HTML语句,包括格式化输出的HTML标记。

   Web.sql提供了两种API,即Convenience API和Client-Library API。如果
 与数据库交互并按接收到的格式显示结果,则可使用前者;如果想一行一行地处理
 返回的数据,则应该使用后者。

   

   1、Web.sql Convenience API


   Web.sql Convenience API为HTS文件中最常用的任务提供了一组简单的例
程。通过这些例程你可以完成大部分的数据库交互操作。

   表3中列出了Convenience API的例程。下面,简述一下它们的用法。

   表3 Convenience API例程及其作用

   函数

   描述

   ws_connect

   返回一个连接句柄。

   Ws_content_TYPE

   设置.pl文件返回的数据内容的类型。

   ws_error

   打印错误信息并终止当前页的执行。
s_fetch_rows

   读取并打印ct_sql调用返回的行。

   ws_print

   打印一个字符串,扩展Perl变量参数。

   ws_sql

   执行一个或多个SQL命令并打印结果。

   ws_rpc

   执行存储过程,更新参数并打印结果。

   ws_connect可以用来改变HTS文件所用的默认数据库连接,通过指定合法的连
 接名而获得数据库连接的句柄,作为其后调用其他Web.sql例程的参数。

   ws_sql的调用格式为:ws_sql ( $db , $sql [, $format] )。其中,$db
 为数据库连接句柄,通常使用默认的数据库连接$ws_db作参数,也可以用
 ws_connect例程获得的连接句柄;$sql是包含了一个或多个SQL命令的串(要在一
个串中包含多个SQL命令,只需用换行符分隔开,即命令间用“\n”隔开);
 $format是一个描述ws_sql如何格式化其返回的行的格式串。其中表示格式的符号
 与C语言类似。例如:

   <SYB TYPE=PERL>

    $sql=qq!select name,dept from compdb.employee!;

    $format="%s属于%s<P>\n";

    ws_sql($ws_db,$sql,$format);

   </SYB>

   注意:“qq!...!”相当于引号。由于格式串中包括<P>,所以每一行结果都
 另起一段。该例的输出结果如下所示:

   张三属于开发部

   李四属于综合部
   ws_print与Perl的print命令基本相同,但当你要打印的串包含了Perl变量
 时,ws_print会在打印该串之前用变量值进行替换。例如,假设某个表单中有一
 个名为color的字段,并将其提交给调用它的HTS文件。在该HTS文件中有一行语
 句:

   <SYB TYPE=PERL>

    $msg="The color is $color.\n";

    ws_print("$msg");

   </SYB>

   若用户在该字段输入了“red”,则打印结果为:

   The color is red.

   如果程序中使用的是print例程,则打印结果为:

   The color is $color.

   2、Web.sql Client-Library API

   Web.sql Client-Library API可对服务器返回的数据逐行进行处理。它提供
了一个与Sybase Open Client-Library(CT lib) API相类似的接口。这个接口
 要比Convenience API复杂得多,也提供了对SQL Server的更多控制。一般来
 说,应将Web.sql Client-Library API与Convenience API结合起来使用。这样
 可以用ws_connect来连接数据库,用ws_error来处理错误,Web.sql
 Client-Library例程与ws_fetch_rows相结合可发送数据库命令和显示结果。表4
 中列出了Client-Library API的例程。

   表4 Client-Library API例程及其作用

   函数

   描述

   ct_callback

   建立或取用处理错误的回调例程。

   ct_cancel

   取消一个命令或命令结果。
   ct_col_TYPE
∪〕龅鼻安檠峁牧欣嘈偷氖椤?BR>
   ct_col_name

   取出当前查询结果的列名的数组。

   ct_connect

   建立一个到服务器的数据库连接。

   ct_fetch

   取一行结果数据。

   ct_fetch_parameters

   更新提供给ct_rpc的结果参数。

   ct_option
  例如,可以使用ct_connect来创建数据库连接。参数为服务器、口令和密
 码,返回值是连接句柄。代码如下:

   <SYB TYPE=PERL>

    $userid="dbuser";

    $passwd="dbpasswd";

    $server="Sybase";

    $dbhandle=ct_connect($userid,$passwd,$server);

   </SYB>

   使用ct_connect建立连接时则无需像ws_connect那样要在数据库映像中提前
 设置合法连接,但它会在HTS文件中显示出服务器的口令和密码,不具备安全性。
 而且Web.sql不会缓存 ct_connect建立的连接。

--
※ 来源:.网易 BBS bbs.netease.com.[FROM: 202.96.122.250]

[关闭][返回]