linux cgi转发串口数据库,CGI连接数据库的方法

毫无疑问,当今Web程序设计中最吸引人而且最复杂的当然就是web数据库程序了。平心而论,其复杂高深的程度决不是你们可以想象得到的。我们先来看看其中涉及到的几个方面的问题:

1.最基本的html设计

2.CGI程序编写调试

3.网络管理和客户协调

4.数据库编写

5.客户/服务体系程序编写

另外你还得不时地同你的客户进行斗争,以取得他们对你工作的认同。因此编写一个大型WEB数据库,是综合素质的考验。

笔者自问尚不完全具备以上的能力,但有幸曾参加过几个web数据库的开发,算是具备了初步的经验吧。这里给大家分享,也算是感谢各位对这个断断续续的教程的总结吧。

一 数据库选择

从一般情况来看,使用web数据库往往是要解决数据的归纳、索引和维护的问题。我们一般选择最流行的关系型数据库,比如NT下的sql,win95和nt下的Access,NT下的sybase,unix下的msql等等。当然还有Oracle、FileMaker PRO、Paradox等等。这些都是很流行的Sql数据库。Sql给数据管理提供了一个标准而坚实的接口,它对数据库操作饿所有函数必需在数据库语言中实现。这种函数包括:数据对象的创建、插入数据和数据修改等。对于数据量不大的小型数据库,一般使用access。

二 接口程序

虽然我们可以直接编写WEB的CGI接口,但是那是工作量巨大且麻烦异常的工作。为了减轻开发者的负担,数据库程序员为我们编写了许多可以直接使用的接口程序,配合不同的数据库。下面就是一些十分常用的接口程序:

1. DB2WWW

这是一个用于和IBM DB2数据库进行连接的工具。在HTTP服务器中,这种工具将HTML文件和SQL命令作为宏文件存储,然后,DB2WWW在接受到浏览器请求后就处理这些宏文件。

2. dbCGI

这个工具通过在html文件中内置SQL语句来实现和数据库的连接。适用于Progress,Sybase,Oracle,Informix,Ingres和ODBC。下面是一个典型的dbCGI程序代码:

dbCGI test

INFORMIXDIR=/usr/informixdir

SQLEXEC=/usr/informix/sqlturbo

TBCONFIG=tbconfig

% [! 8:

%8d

%]

....

selet *

from customer

order by date,city,zipcode

这个工具通过标签和%转意字符来把sql语句放置在html语句内。

3 Genera

这个是sybase数据库系统的网关。它通过在文本文件中加入特定的语句来和数据库进行连接。

4 WebDBC

以windows NT为平台,可以访问所有对odbc兼容的数据库。

5 A-Xorion

他是一个CGI网关,它可以访问大多数的PC机数据库。它以Windows3.1/95/NT为平台。数据库为Ms Access2.0。

三 编程语言

上面介绍的是一些常用的接口程序,它们需要Server的配合才能正常工作。当然如果是很小的数据库程序,不需要使用如此复杂的数据库接口程序。用C,Perl,VB等等,写成CGI程序,在CGI程序内调用数据库。虽然速度方面不是很快,但绝对是非常简单的。

最后的例子:

最后,我准备以一个例子来结束这个教程。

环境:

这是一个非常简单的WEB应用程序。如果你要运行这个程序,也许你得化些时间来配置自己的系统。在这个例子里,CGI程序由Perl5来编写,后台数据库使用sybase system 10,Sybperl用于建立脚本和数据库之间的通信,用其他的CGI后台数据库接口程序也可以。

CGI程序:

会议登记程序

会议登记系统

please fill out the following form. A registration packet will be sent to you immediatel you.Note that all bolad-facedfields muse be complected.


first name:

Last name:

address 1:

address 2:

city:

State:

Zip:

phone:

Fax:

Email:

Packge:

  • Package A
  • Package B
  • Package C

How did you hear about the conference:

  • Direct Mail
  • Associate
  • Journal
  • Other

Perl脚本:

#!/usr/local/bin/perl

require"cgi-lib.pl";

&ReadParse(* input);

$mc_fname=$input{'c_fname'};

$mc_lname=$input{'c_lname'};

$mc_add1=$input{'c_add1'};

$mc_add2=$input{'c_add2'};

$mc_city=$input{'c_city'};

$mc_state=$input{'c_state'};

$mc_zip=$input{'c_zip'};

$mc_phone=$input{'c_phone'};

$mc_fax=$input{'c_fax'};

$mc_email=$input{'c_email'};

$mc_package=$input{'c_package'};

$mc_ad=$input{'c_ad'};

print &PrintHeader;

if (($mc_fname eq"")||(mc_lname eq "")||(mc_add1  eq "")||($mc_add2  eq "")||(

mc_city eq "")||(mc_state eq "")||(mc_zip  eq "")){

printf ("
");

printf(",strong>Your registration cannot be processed as is.Pleae make sure all the requied fields are filled properly.");

print"

";

print"Pleae use the Backbutton to complete the form./n";

}

else{# data is OK

use Sybase::DBlib;

$dbh=Sybase::DBlib->dblogin('conf_user','123','DB-SERVER','REG');

$dbh->dbuse('conference');

$sqlcmd="insert into reg(c_fname,c_lanme,c_add1,c_add2,c_city,c_state,c_zip, c_phone,c_fax,c_email,c_package,c_ad)";

$sqlcmd=$sqlcmd."values("

$sqlcmd=$sqlcmd.'/"".$mc_fname."/",";

$sqlcmd=$sqlcmd.'/"".$mc_flame."/",";

$sqlcmd=$sqlcmd.'/"".$mc_add1."/",";

$sqlcmd=$sqlcmd.'/"".$mc_add2."/",";

$sqlcmd=$sqlcmd.'/"".$mc_city."/",";

$sqlcmd=$sqlcmd.'/"".$mc_state."/",";

$sqlcmd=$sqlcmd.'/"".$mc_zip."/",";

$sqlcmd=$sqlcmd.'/"".$mc_phone."/",";

$sqlcmd=$sqlcmd.'/"".$mc_fax."/",";

$sqlcmd=$sqlcmd.'/"".$mc_email."/",";

$sqlcmd=$sqlcmd.'/"".$mc_package."/",";

$sqlcmd=$sqlcmd.'/"".$mc_ad."/",";

$sqlcmd=$sqlcmd.'/"".$mc_fax."/",";

$dbh->dbcmd($sqlcmd."/n");

$dbh->dbsqlexec;

print"Thank you.Your registration has been submitted.You should receive you packet shourtly in the mail.";

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值