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; & 阅读详情

相关推荐

LVGL开发新选择:深度对比NXP GUI Guider与SquareLine Studio,免费版够用吗?

本文深度对比了LVGL开发中两款主流工具NXP GUI Guider与SquareLine Studio的核心差异,包括功能定位、设计能力、代码生成质量和硬件适配等方面。针对不同项目需求,分析了免费版工具的适用性,帮助开发者根据预算和功能需求做出明智选择。特别关注了GUI设计工具在嵌入式开发中的实际应用效果。

weixin_26976635的博客 429

CGI机制及实现

cgi

qq_41420788的博客 1202

采用超级电容设计的UPS不间断电源,用于掉电数据保存,可续航10-60秒

关键词:树莓派 CM4 UPS 不间断电源 掉电保存 超级电容 SuperCap 充电 升压 续航 10F 法拉电容 Mcuzone 野芯科技 概述:我们经常会遇到系统意外掉电的情况,对于一些可靠性要求很高的工业现场设备或者运行过程中有重要数据需要保存的平台就需要UPS电源了。常规的UPS采用后备锂电池设计,具备无缝切换、续航时间长、稳定可靠等特点,但同时也有价格过高、体积过大的缺点。对于不少仅需在检测到系统掉电后对数据进行保存即可的应用而言,这些标准的UPS电源就不太合适,为此我...

6605

一个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

蓝桥杯FPGA赛道积分赛

代码如下: 按键驱动 代码如下 按键驱动 代码如下: 顶层文件 按键驱动 数码管驱动 声明:本代码借鉴网络资料,如有侵权和错误请联系作者删除。我是从寒假开始备赛的,由于我基础不行,备赛过程中也是混混呃呃的,备赛效率不高,总体来说备赛不认真,有点拖拉,但是最后我也坚持备赛到了今天,在备赛过程中,即复习了旧的东西,也学到了新的东西,总结起来还是有点收获的,后天北京、天津、河北地区就要进行省赛了,我会全力以赴,不管结果怎么样,尽力就好,最后祝大家都能

weixin_69804913的博客 1990

SmartFusion从FPGA到ARM系列教程

前言 本系列教程,将会以Microsemi SmartFusion一代芯片A2F200M3F为例,简单介绍片上ARM Cortex-M3 硬核 MCU 基本外设的使用,及其与FPGA逻辑模块进行交互的示例。 在学习片上硬核ARM Cortex-M3 MCU的开发之前,要先熟悉Microsemi Libero SoC开发环境的使用,可以参考:Microsemi Libero SoC系列教程 关于Microsemi SmartFusion混合型FPGA的介绍,可以参考:Microsemi SmartFusio.

whik1194的博客 8293

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

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

小人物的编程 1902

一篇文章带你快速入门 MATLAB

文章目录一、认识 MATLAB 界面二、MATLAB 的运行方式三、Matlab 中的窗口1. 命令窗口2. MATLAB的程序编辑窗口3. 工作空间窗口4. 命令历史窗口5. 图形窗口6. 当前目录窗口四、MATLAB的帮助系统1. 帮助命令2. 联机帮助五、其他知识补充1. MATLAB的搜索路径2. 变量命名规则3. M文件命名规则 一、认识 MATLAB 界面 在 MATLAB Desktop 中,工具条取代了菜单和工具栏。应用程序库收纳了 MATLAB 产品系列的应用程序,单一文件应用程序打包为一

南淮北安的博客 5128

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

数据分析案例-汽车客户信息数据可视化分析

本数据集来源于kaggle,原始数据集共有8068条,11个特征变量,各变量含义解释如下:ID:客户IDGender:客户性别Ever_Married:客户婚姻状况Age:客户年龄Graduated:客户是毕业生吗?Profession:客户的职业Work_Experience:多年工作经验Spending_Score:客户的消费评分Family_Size:客户家庭成员人数(含客户)Var_1:客户的匿名类别Segmentation:(目标)客户的客户群。

m0_64336780的博客 1万+

OpenClaw实战系列03:Slack/Telegram国际版接入实战指南

在当今的软件开发和工作流自动化中,将项目管理工具与即时通讯平台集成已成为提高团队协作效率的关键。OpenClaw作为一个开源的自动化工具,通过接入Slack和Telegram国际版,可以实现实时通知、自动化任务触发和团队协作的无缝对接。本文将详细介绍如何实现OpenClaw与这两个主流即时通讯平台的集成。OpenClaw是一个开源的自动化工作流引擎,支持多种触发器和执行器,能够帮助开发团队实现CI/CD流程、任务调度、监控告警等自动化场景。模块化设计:支持插件化扩展多触发器支持。

PeterPan的博客 587

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

KEPServerEX 6 之 GE Ethernet 连接FANUC ROBOT机器人实战

GE Fanuc是GE公司控制系统部门的一部分,成立于1998年。其主要业务涵盖工业自动化、控制系统、PLC和组态软件等领域。其产品可用于包括自动化、过程自动化、国防、汽车制造、通讯、医疗和航空航天等各种工业领域2009 8月 GE和FANUC今天宣布两家公司已同意解除合资企业GE FANUC自动化公司。通过以上历史,GE Ethernet Driver 当下还支持对接FANUC ROBOT机器人 就不奇怪了。

-雲飛兄-博客 1791

JavaScript跨域问题探究一

传闻JavaScript跨域问题是每个JavaScriptchengxuyuanbixu

Kevin的逆袭博客 969

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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万+

STM32F407中文手册

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

表单Form的submit事件不响应

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

lynna342的专栏 1347

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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、付费专栏及课程。

余额充值