分享
 
 
 

Web数据库开发工具(下)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Web数据库开发工具(下)

六、在HTS文件中使用Perl访问数据库

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

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

1、Web.sql Convenience API

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

函数

描述

ws_connect

返回一个连接句柄。

Ws_content_TYPE

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

ws_error

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

Ws_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_prin 会在打印该串之前用变量值进行替换。例如,假设某个表单中有一个名为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与C nvenience API结合起来使用。这样可以用ws_connect来连接数据库,用ws_error来处理错误,Web.sql Client-Library例程与ws_fetch_rows相结合可发送数据库命令和显示结果。

函数

描述

ct_callback

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

ct_cancel

取消一个命令或命令结果。

ct_col_TYPE

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

ct_col_name

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

ct_connect

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

ct_fetch

取一行结果数据。

ct_fetch_parameters

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

ct_option

设置、取出或清除服务器查询处理选项。

ct_res_info

取出与当前结果集或命令有关的信息。

ct_results

决定SQL命令状态和返回的结果类型。

ct_rpc

调用远程服务器上的存储过程。

ct_sql

传送一个或多个SQL命令到数据库服务器。

例如,可以使用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不会缓存 t_connect建立的连接。

七、Web.sql应用实例

数据库应用中最基本的功能之一即是检查用户的合法性。在下面的例子中,将用户在页 ?ogin.hts中输入的用户名和口令与数据库compdb的user用户口令表中的内容进行匹配,如 ?没Р缓戏 ,则拒绝该用户进一步访问。?例中使用的是数据库访问?像表中的缺省数据?连接,直接打开要访问的数据库compdb即可对其中的表进行操作。

1、页面Login.hts的代码

<HTML>

<HEAD>

<TITLE>Web.sql应用实例</TITLE>

</HEAD>

<BODY>

<CENTER>

<H4>请输入您的用户名称及用户口令 :</H4>

<FORM ACTION="verify.hts" METHOD=POST>

<P><TABLE ALIGN="CENTER">

<TR><TD>用户名称:<TD><INPUT NAME=name TYPE="TEXT" SIZE=10 MAXLENGTH=8>

<TR><TD>用户口令:<TD><INPUT NAME=password TYPE="PASSWORD" SIZE=10 MAXLENGTH 8>

</TABLE><P>

<INPUT TYPE="submit" NAME="select" VALUE="确定口令" ALIGN=CENTER>

</CENTER>

</FORM>

</BODY>

</HTML>

2、页面verify.hts的代码

<HTML>

<HEAD>

<TITLE>用户口令校验</TITLE>

</HEAD>

<BODY >

<SYB TYPE=SQL>

use compdb

</SYB>

<SYB TYPE=PERL>

my $sql="select * from user where username='".$name."' and userpsw='".$passw rd."'";

# 判断查询语句是否传输成功

if (($rc=ct_sql($ws_db,$sql)) != CS_SUCCEED)

{

ws_error("无法处理数据库请求操作!");

}

# 执行查询语句

my $result_TYPE="";

$ret =ct_results($ws_db,$result_TYPE);

if ($ret==CS_SUCCEED)

{

# 没有返回结果

if ($result_TYPE==CS_CMD_DONE)

{

ws_error ("对不起,您不是我们的用户!");

}

if ($result_TYPE==CS_CMD_FAIL)

{

ws_error ("对不起,您不是我们的用户!");

}

# 有返回结果

if ($result_TYPE==CS_ROW_RESULT)

{

# 计算结果记录的条数

$recno=0;

while (@row=$ws_db->ct_fetch())

{

$recno=$recno+1;

}

# 记录数为0,注册失败

if ($recno==0)

{

ws_error ("注册失败,请检验您的用户名及口令!");

}

# 有记录,注册成功,可继续执行其他代码

}

}

</SYB>

</BODY>

</HTML>

总之,Web.sql为Web数据库的开发提供了较为丰富的开发环境,它支持SQL语句,基本?能够满足Web数据库开发的需要。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有