CGI连接数据库的方法

Apache 配置CGI脚本操作数据库 Apache 配置CGI脚本操作数据库 CGI Apache配置php Apache配置Python php操作数据库 Python操作数据库 MySQL-python php-mysql 阅读详情

    毫无疑问,当今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

    http://www.software.ibm.com/data/db2/db2wfac2.html

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

    2. dbCGI

    http://www.progress.com/webtools.html

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

<title>dbCGI test</title>
<sql init>
INFORMIXDIR=/usr/informixdir
SQLEXEC=/usr/informix/sqlturbo
TBCONFIG=tbconfig
</sql>
<sql connect connl>
<DATABASE=stores>
<sql>
<sql format>
% [! 8:<h1>%8d</h1>%]
....
</sql>
<sql query connl>
selet *
from customer
order by date,city,zipcode
</sql>
<sql disconect connl>
</sql>
<sql uninit>
</sql>
    这个工具通过<sql>标签和%转意字符来把sql语句放置在html语句内。

    3 Genera

    http://gdbdoc.gdb.org/letovsky/genera/general.html

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

    4 WebDBC

    http://www.ndev.com

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

    5 A-Xorion

    http://www.clark.net/infouser/endidc.html

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

    三 编程语言

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

    最后的例子:

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

    环境:

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

CGI程序:

<head>
<title>会议登记程序</title>
</head>
<body>
<h2>会议登记系统</h2>
please fill out the following form. A registration packet will be sent to you immediatel you.Note that all <b>bolad-faced</b>fields muse be complected.
<hr>
<form method="post" action="cgi-bin/resgister.pl">
<b>first name:</b><input type="text" name="c_fname" size=30>
<p>
<b>Last name:</b><input type="text" name="c_lname" size=30>
<p>
<b>address 1:</b><input type="text" name="c_add1" size=30>
<p>
<b>address 2:</b><input type="text" name="c_add2" size=30>
<p>
<b>city:</b><input type="text" name="c_city" size=30>
<p>
<b>State:</b><input type="text" name="c_state" size=2>
<p>
<b>Zip:</b><input type="text" name="c_zip" size=15>
<p>
<b>phone:</b><input type="text" name="c_phone" size=15>
<p>
<b>Fax:</b><input type="text" name="c_fax" size=15>
<p>
<b>Email:</b><input type="text" name="c_email" size=15>
<p>
Packge:
<ul>
<li><input type="radio" name="c_packge" valuge="a">Package A
<li><input type="radio" name="c_packge" valuge="b">Package B
<li><input type="radio" name="c_packge" valuge="c">Package C
</ul>
How did you hear about the conference:
<ul>
<li><input type="radio" name="c_ad" value="a">Direct Mail
<li><input type="radio" name="c_ad" value="b">Associate
<li><input type="radio" name="c_ad" value="c">Journal
<li><input type="radio" name="c_ad" value="d">Other
</ul>
<p>
<input type="reset" value="clear"><input type="submit" value="Register"><p>
</form>

<hr>
</body>

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 ("<br>");
printf(",strong>Your registration cannot be processed as is.Pleae make sure all the requied fields are filled properly.</strong>");
print"<p>";
print"Pleae use the <i>Back</i>button 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"<strong>Thank you.</strong>Your registration has been submitted.You should receive you packet shourtly in the mail.";

}

利用JS实现按钮onclick提交表单时,按钮无法响应问题 &lt;%@page import="dao.library.com.UserDao"%&gt; &lt;%@page import="java.util.List"%&gt; &lt;%@page import="entity.library.com.User"%&gt; &lt;%@page import="java.util.ArrayList"%&gt; & 阅读详情

相关推荐

从零开始掌握OBD-II:汽车诊断开发的核心技术与实战解析

本文深入解析OBD-II汽车诊断系统的核心技术,包括ECU通信协议、故障码解析及诊断工具开发实战。通过详细的协议分析和代码示例,帮助开发者快速掌握汽车诊断开发技能,实现从零到精通的进阶。特别适合从事汽车电子开发和OBD检测的技术人员参考学习。

weixin_42528780的博客 438

CGI机制及实现

cgi

qq_41420788的博客 1202

当图像配准遇见边缘计算:低功耗设备的优化实践

本文探讨了在边缘计算环境下优化图像配准技术的实践方法,重点解决低功耗设备如树莓派和Jetson Nano上的算力瓶颈问题。通过算法轻量化、硬件加速和内存优化等策略,实现了毫秒级图像配准,适用于智能安防、移动医疗等实时性要求高的场景。

weixin_29054195的博客 388

一个jsp+cgi+html小工程,完成注册,后台使用CGI

前提:安装了APACHE 和 tomcat and jdk ,mysql 需求:完成一个客户注册的过程。 首先完成一个用户注册的test.html页面该页面调用一个test.jsp ,test.jsp获取用户输入数据并再把它们传给hello.cgi处理。最后将处理过的数据写入数据库。 准备工作:test.html(位于D:"local"htdoc)和hello.cgi(位于 D:"...

dengweidan3299的博客 251

用Verilog在FPGA上做个电子琴:从矩阵键盘到蜂鸣器的完整实现(附代码)

本文详细介绍了如何使用Verilog在FPGA上实现一个完整的电子琴系统,涵盖矩阵键盘扫描、音调生成和蜂鸣器驱动等核心模块。通过模块化设计和PWM调制技术,开发者可以构建一个可交互的音乐播放器,项目代码完整且易于扩展,适合FPGA初学者和数字逻辑设计爱好者实践。

weixin_29191669的博客 403

自动驾驶——最优控制算法(LQR)工程化总结

到近段时间,真正在我们的控制器上运行最优控制算法(LQR),一步一个脚印,从开始只是知道其“控制理论”的阶段、再到对着一堆网上的资料和公式一筹莫展不知何着手、再到初步实现了LQR算法的开发(但是使用的扭矩环控制,控制的不好,而且由于各种原因被delay,迟迟无法落地),直到大上个星期,泊车平台有此LQR开发需求,又重新了开始了算法的研发,用时一个周时间完成了算法开发,然后再用一个周时间进行实车最优控制算法验证与调试,取得了很大的进展,由于执行器是转角控制的,这无疑少了很多的工作量。

qq_40464599的博客 2787

Web知识点---公共网关接口CGI的实现方法

介绍了通用网关接口CGI的特点,以及提供了四种编程语言的CGI程序代码

小人物的编程 1902

ENVI5.6 Seamless Mosaic多景影像镶嵌色差问题

多景影像无缝镶嵌色差问题拟解决方法

Matchaya的博客 7705

c语言cgi连接数据库,建立与数据库的连接-CGI教程,CGI文档

我们使用dbi之前首先需要声明:#!/usr/bin/perl -wuse dbi;我们有两种方法可以建立perl与数据库之间的连接:#!/usr/bin/perl -wuse dbi;#建立与数据库的连接,第4个参数标明数据库类型$dbh = dbi->connect( connection_string, username, password, msql );if ( !defined ...

weixin_28192383的博客 746

一文掌握SourceTree使用(超级详细)

SourceTree是一款开源的代码仓库客户端工具,界面美观,操作简单,具有代码克隆、本地创建、提交代码、撤销修改,拉取(pull)代码、上传(push)代码、合并分支等操作。对于软件开发人员是一款必备的应用软件。

GM_115的博客 3万+

​​10.3 时间敏感网络(TSN)协议适配​

本文探讨了时间敏感网络(TSN)协议在PCIe网络加速卡开发中的适配方案,重点分析了时间同步、流量调度和冗余传输三大核心问题。研究从协议实现、硬件加速设计和驱动优化三个维度展开,提出采用FPGA实现PTP时钟同步、动态TAS调度器以及双路径冗余传输等技术方案。通过工业控制网络案例验证,该方案将端到端延迟从120μs降至8μs,带宽利用率提升至92%,同时实现了100%的确定性保障。研究还总结了调试工具和典型问题解决方法,为TSN在PCIe网络中的实际应用提供了技术参考。

amy_mhd的博客 364

JavaScript 中form.submit()提交不响应问题

[code="java"] 后台操作区 BODY { MARGIN-LEFT: 0px; BACKGROUND-COLOR: #ffffff } .STYLE1 {color: #ECE9D8} function sub() { var form = document.getElementById('form1...

iteye_19968的博客 705

基于matlab实现的水果识别系统设计

本项目针对多种常见水果混合的图像,利用 Matlab 软件,对水果的识别进行研究。根据水果和背景的差别选取阈值,对去噪增强对比度后的图像进行二值化处理。再对图像进行边缘检测,选定连通区域,标记后再对不同种水果的颜色,形状,大小等特征进行快速识别水果,从而实现对水果的正确分拣。:水果识别、MATLAB、数字图像处理。

热情、奔放、快乐编程! 4854

JavaScript跨域问题探究一

传闻JavaScript跨域问题是每个JavaScriptchengxuyuanbixu

Kevin的逆袭博客 969

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JS调用form的方法submit直接提交form的时候,submit事件不响应解决办法

当用JS调用form的方法submit直接提交form的时候,submit事件不响应。为什么? 如   第一种情况: 一个input onClick="myform.submit();"> 提交表单:onSubmit="return check();"action="/NetInvoice/bill/fpkj.do"/> JS校验: function c

米刀文 8万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

表单Form的submit事件不响应

一、问题描述    当用JS调用form的方法submit直接提交form的时候,submit事件不响应。为什么?知道的请回复。类比一下,我用input.select()做了测试,却能响应select事件。这个原因先放一边,我们看看先怎么把眼下的问题解决了。不响应事件的代码示例: http://www.webjxcom">> var form = document.getE

lynna342的专栏 1347

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

form表单同时提交带文本和图片的数据

方法一:使用ajax异步提交 此种方法的好处是可以回调响应结果。 html代码: <form action="${basePath}/save" method="post" name="form" id="form"> <table> <tr> <td>名称:</td> ...

Aquilian的专栏 1万+

php怎么响应submit,HTML表单Form的submit事件不响应解决方法

一、问题描述当用JS调用form的方法submit直接提交form的时候,submit事件不响应。为什么?知道的请回复。类比一下,我用input.select()做了测试,却能响应select事件。这个原因先放一边,我们看看先怎么把眼下的问题解决了。不响应事件的代码示例:var form = document.getElementById('form1');form.onsubmit = func...

weixin_35796207的博客 362

Formily Antd Submit 提交按钮完全指南:防重复提交、Loading 状态与 form.submit 底层原理

> Submit 是 `@formily/antd` 中负责表单提交的按钮组件,它把「点击按钮 → 校验表单 → 触发提交回调 → 展示 Loading」这条链路封装为一个组件。本文基于 `@formily/antd` 的 [Submit 官方文档](https://link.gitcode.com/i/3033baea57c41950a34dde7a62d3ac17) 与仓库源码,讲解 Subm

gitblog_00910的博客 297

Formily Submit 提交按钮实战指南:普通提交、Loading 防重复提交与源码原理

> 本篇指南以 [@formily/antd 的 Submit 组件文档](https://link.gitcode.com/i/ef209494a09df5318e1c83cc1c8bb3e7) 为核心,结合 [Submit 源码](https://link.gitcode.com/i/7fc26726ebf45c4728668230c7093133) 与 [@formily/core 的提交链

gitblog_00108的博客 866

form 表单提交 submit()只能提交一次

在提交表单时,如果服务器响应速度慢,或者因为别的什么原因,导致按下提交出现“没反应”的情况,这是就要限制只允许提交一次表单以减轻服务器压力 有两种方式: 1.提交之后禁用按钮 2.提交之后取消后续的表单操作 第一种: document.getElementById('提交按钮').disable==true; //将按钮禁用,不过缺点是可以通过回车来提交 第二种: window.onload=function(){ var form=document.getElementByI..

sinat_38992528的博客 4347

html点击事件submit,HTML_表单Form的submit事件不响应,一、问题描述 当用JS调用form - phpStudy...

一、问题描述当用JS调用form的方法submit直接提交form的时候,submit事件不响应。为什么?知道的请回复。类比一下,我用input.select()做了测试,却能响应select事件。这个原因先放一边,我们看看先怎么把眼下的问题解决了。不响应事件的代码示例:var form = document.getElementById('form1');form.onsubmit = func...

weixin_35935264的博客 823

antd 的form表单submit提交不生效_快速了解JavaScript的表单操作

前言在 HTML 中使用 表单元素在 JavaScript 中对应的是 HTMLFormElement 类型,而HTMLFormElement继承了HTMLElement接口:interface HTMLFormElement extends HTMLElement { ...}因此,HTMLFormElement 除了与 HTMLElement有一样的属性和方法外,还有自己独有...

weixin_28676397的博客 2237

关于Firefox浏览器submit提交无效的问题

Firefox表单提交兼容

没事写代码 3805

Form表单提交之后,获取返回值

经常用form表单提交的小伙伴有没有发现,form表单默认的提交是没有返回值的,而且默认提交成功之后是跳转,跳转的action的路径,下面写一下默认的提交如何获取到form表单的返回值json,并且阻止默认的跳转动作。 第一种方式 :让form默认调整当前的iframe 即可 页面结构见下面: <form target="form" action="" enctype="multipart/form-data" method="post"> <input type="fi...

duansamve的博客 2万+
上一篇: 我的csdn之日志的第一天
下一篇: 一个完整的新闻发布系统
天天跑圈⭕
博客等级 码龄22年 1粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值