说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

利用Delphi开发响应用户输入的数据库查询Web Server程序

HTML文档下载 WORD文档下载 PDF文档下载
利用Delphi开发响应用户输入的数据库查询Web Server程序

---- 通 常 情 况 下,用 户 通 过 浏 览 器 在Web 站 点 上 看 到 的 网 页 大 多 是 静 态的, 随 着Internet/Intranet 的 飞 速 发 展 和 普 遍 应 用, 静 态 网 页已 这 远 远 不 能 满 足 用 户 的 实 际 需 求

用 户 希 望 更 多 地看 到 根 据 要 求 而 动 态 生 成 的 网 页, 例 如 响 应 用 户 输入( 选 择) 进 行 数 据 库 查 询、 动 态 生 成 报 表 等。 就 目前 而 言, 采 用 运 行 在Web Server 端 的CGI、ISAPI/NSAPI 应 用 程 序 还是 一 种 主 要 的 动 态 生 成 网 页 的 方 式。

---- 使 用Delphi 3 for Client/Server 开 发Web Server 应 用 程 序 不 仅 简 单、 方 便, 而 且 其开 发 能 力 十 分 强 大, 因 为Delphi 3 提 供 了WebModule、WebApplication、TwebRequest、TwebResponse、TPageProducer 等 大 量 的 组 件 和 对 象, 以 支 持Web Server 程 序 的 开 发, 能够 非 常 简 单 地 生 成 专 业 性 的 ISAPI/NSAI、CGI 程 序。 而 且 由于Delphi 强 大 的 数 据 库 开 发 能 力, 允 许DLL 来 处 理 大 量 并发 的、 安 全 线 程 的 数 据 库 连 接, 使 得Web Server 程 序 的 开发 更 是 锦 上 添 花。

---- 在Delphi 3 的Demos 中提 供 了 简 单 的Web Server 应 用 程 序 开 发 的 范 例, 但 没 有 涉及 到 响 应 用 户 输 入 的 问 题。 而 响 应 用 户 的 输 入 或 选择, 并 通 过 数 据 库 查 询 来 返 回 查 询 结 果, 是 我 们 编 写Web Server 应 用 程 序 的 一 种 主 要 形 式。

---- HTML 文 档 中 用 户输 入 主 要 是 通 过< FORM > 语 句 段, 并 支 持POST、PUT、GET、HEAD 等 方 法, 而Web Server 应 用 程 序 是 怎 样 接 收 到 客 户 端 用 户的 输 入( 选 择) 请 求 信 息 呢 ? 我 们 知 道, 在HTTP 协 议中, 浏 览 器 客 户 端 向Web Server 应 用 程 序 传 送 请 求 数 据 主要 是 通 过URL 和CONTENT 部 分。 例 如 在

URL:http://www.gtgaj.gov/scripts/wdcx.dll

/runquery?gdnd=1992&bgqx= 长 期

---- 中,gdnd=1992&bgqx= 长 期 是 数 据参 数, 它 请 求ISAPI 程 序wdcx.dll( 对 应 的 动 作 事 件 为/runquery,若 使 用 确 省 动 作 事 件, 则 不 需 要 这 个 字 符 串), 把 归档 年 代(gdnd) 为1992 年 而 且 保 管 期 限(bgqx) 为 长 期 的 文 档 信息 返 回 到 浏 览 器 并 显 示, 这 种 方 法 一 般 应 用 在 数 据 量比 较 少 的 情 况 下, 优 点 是 比 较 容 易 输 入 参 数, 可 直 接在URL 中 输 入 请 求 信 息, 缺 点 是 返 回 数 据 量 不 能 太 大,并 影 响URL 的 显 示, 在 参 数 比 较 多 时, 将 出 现 一 个 长 串的URL。 而 在CONTENT 中 保 存 数 据 信 息 的 优 点 是 不 影 响URL 的显 示, 而 且 允 许 返 回 的 数 据 量 较 大, 缺 点 是 用 户 只 能使 用< FORM > 语 句 段 让 浏 览 器 生 成 请 求 信 息, 不 能 直接 在URL 中 输 入。 在POST、PUT、GET 和HEAD 四 种 方 法 中, 除 了POST 方 法 使 用CONTENT 向Web Server 应 用 程 序 传 送 数 据 以 外, 其 它方 法 都 是 通 过URL 来 传 送 数 据 的。

---- Delphi 3 中 提 供 了装 载 浏 览 器 请 求 信 息 的TWebRequest 对 象, 利 用 该 对 象 的methodtype 属 性 即 可 得 知HTTP 传 送 请 求 信 息 的 方 法, 再 利 用 该 对 象的ContentFields 或QueryFields 属 性 即 可 将HTTP 传 送 的 信 息 进 行 分析, 非 常 容 易 使 用。 例 如, 对 于CONTENT 中 的 数 据, 我 们 可直 接 使 用Request.ContentFields.Values[' 用 户 输 入 项 的 名 称'] 来 读取 用 户 的 输 入 信 息; 而 对 于URL 中 的 数 据, 则 可 直 接 使用Request.QueryFields.Values[' 用 户 输 入 项 的 名 称'] 来 读 取。

---- 下 面 就 通 过 一个 简 单 的 例 子 来 介 绍 如 何 开 发 一 个 响 应 用 户 输 入 的数 据 库 查 询Web Server 程 序

---- 首 先, 在Web 服务 器 端 安 装 数 据 库 引 擎BDE

并 设 置 好 数 据 库 别 名wsda, 指向 一 个 包 含 归 档 部 门、 归 档 年 代、 卷 号、 文 件 日 期、文 件 字 号、 文 件 作 者、 标 题 等 字 段 的 数 据 库 文 件wsdak.dbf。

---- 接 着 建 立 一 个HTML 文 件wsdacx.htm, 放 在Web 服 务 器 的 确 省 目 录 下( 如c:\webshare)

wsdacx.htm 的 内 容 如 下:

< HTML >< HEAD >< TITLE >文书档案查询< /TITLE >

< /HEAD >

< BODY >

< h1 >文书档案查询卡< /h1 >

< HR >

< FORM action="/scripts/wdcx.dll" method=post >

请输入标题关键词:< input type="text"

size="16" Maxlength="16" name="btgjc" >< BR >

< INPUT TYPE=SUBMIT VALUE="查询" >

< INPUT TYPE=RESET VALUE="重填" >

< /FORM >

< HR >

< /BODY >< /HTML >

---- ( 在 本 例HTML 的< FORM > 语 句中, 使 用 的 是POST 方 法

可 改 为 其 他 方 法 而 无 需 修 改 下面 的ISAPI 源 程 序

为 简 单 计, 本 例 只 列 出 了 一 个 用 户 输入 项)。

---- 在Delphi 中 新 建一 个 基 于ISAPI 的Web Server Application, 增 加 一 个 确 省 的 的 动 作事 件, 其 代 码 如 下:

procedure TWebModule1.WebModule1Web

ActionItem1Action(Sender: TObject;

Request: TWebRequest; Response:

TWebResponse; var Handled: Boolean);

var

MyDB : TDatabase;

MyQuery : TQuery;

Count : Integer;

Input: TStrings;

Begin

Input:=nil;

Case request.methodtype of

mtpost: Input := request.ContentFields;

mtget

mtput

mthead: Input := request.QueryFields;

end;

if input.values['btgjc']< >'' then

begin

MyDB := TDatabase.Create(nil);

MyQuery := TQuery.Create(nil);

try

MyDB.AliasName := 'wsda';

MyDB.DatabaseName := 'wsda';

MyQuery.DatabaseName := MyDB.DatabaseName;

response.content:=

'< HTML >< HEAD >< TITLE >查询结果

< /TITLE >< /HEAD >'#13+

'< BODY >'#13+

'< H2 >< font face="隶书" color="green" >

查询结果信息:< /font >< /H2 >'#13+

'< table border=1 >'#13+

'< tr >'#13+

'< th >卷号< /th >'#13+

'< th >文件日期< /th >'#13+

'< th >文件字号< /th >'#13+

'< th >标题< /th >'#13+

'< tr >'#13; //#13是换行符

Myquery.sql.clear;

Myquery.sql.add('select * from wsdak.dbf '+

'where (标题 like "%'+input.values['btgjc']+'%")');

Myquery.open;

Myquery.first;

Count:= 0;

while not MyQuery.eof do

begin

response.content:=response.content+'< tr >'#13+

'< td >'+MyQuery.FieldByName('卷号')

.AsString+'< /td >'#13+

'< td >'+MyQuery.FieldByName

('文件日期').AsString+'< /td >'#13+

'< td >'+MyQuery.FieldByName('文件字号')

.AsString+'< /td >'#13+

'< td >'+MyQuery.FieldByName

('标题').AsString+'< /td >'#13+

'< tr >'#13;

count:=count+1;

MyQuery.Next;

end;

response.content:=response.content+

'共查询到'+inttostr(count)+'条信息< br >';

finally

response.content:=response.content+'

< /table >< /BODY >< /HTML >';

MyQuery.Close;

MyDB.Close;

MyQuery.Free;

MyDB.Free;

end;

end

else response.content:='请先输入标题关键词:';

end;

---- 需 要 注 意 的 是: 必 须 在 本 单元 文 件 的uses 子 句 中 手 工 添 加db 与dbtables 单 元。 为 简 单计, 本 例 并 没 有 使 用TTable、Tquery、Tdatasource、TpageProducer、TqueryProducer 等 组 件, 有 兴 趣 的 读 者 不 妨 一 试。

---- 将project 存 为wdcx.dpr

编 译 后 放 到Web 服 务 器 的 可 执 行 文 件 路 径( 如C:\WebShare\Scripts\),即 可 响 应HTML 文 件wsdacx.htm 的 用 户 输 入, 并 返 回 数 据 库 查询 结 果。

---- 以 上 程 序 代 码在Windows 95B2(OSR) 的 个 人 Web 服 务 器PWS/Windows NT 4.0 的IIS、Microsoft Internet Explorer 4.0、Delphi3 Client/Server 下 调 试 通 过。

VB怎样存取注册表信息 VB怎样改变双击鼠标的时间间隔? VB怎样关闭一个正在运行的程序 VB怎样限制鼠标移动 ANI文件格式 -VB资料 AVI文件格式-VB资料 DBF文件转为MDB文件的方法 -VB资料 FLIC动画文件的播放程序设计-VB资料 MS Office 开发工具VBA TextBox 中英文输入方法切换-VB资料 TXT文件的读取-VB资料 VB 如何将dbgrid印出来 VB5.0调用Office97技巧 VB5如何把帮助文件加到设计的程序内? VB编程步步高-打印篇(二) VB编程的好帮手资源文件 VB的OPEN对话框控件图示功能扩充 VB通用数据表格输出程序的设计 VB网格中输入数据 VB应用程序中打印条形码的两种方法 VB与Windows资源管理器互拷文件 VB中DOS文件名与长文件名的转换 VB中的Unicode 和 Ansi 格式 VB中如何实现文本查找功能 VB中自制文件搜索器 Windows 初始化文件的修改 -VB资料 Word 97与WPS97的完美结合 -VB资料 比较两个文件-VB资料 采用递归算法删除带有多级子目录的目录-VB资料 菜单项的动态装入 -VB资料 处理加了密码的MDB文件-VB资料 上午56、下午68,散分先 jsp站点的web服务器需要什么都??怎么设置??那里有说明文档没有啊 怎样在窗口没有显示出来之前将数个小位图“拼成”一个大位图并可以保存,急! win2000的怪问题 快救救我!!!!!!!!!!!!!!! 一个关于c++builder的ado的问题! PACK6是不是有问题? MFC程序的结构问题? 一个酷似chinaasp的社区,需要你的支持。嘿……实在做得很好,送分!!!随便给朋友做做广告 7:30之前一定要交。。。。急。。。。!!!! 文件改名用哪个函数啊? 为什么我的windows2000pro共享文件不能访问????? 在VB.Net中的TabControl有一个OwnerDraw的功能,但不知到如何才能将上面的Item画成有曲线的 一个程序员的路是怎样开始的?我该选择VB还是C语言? 那里有动态加载控件的文章??? 哪位高手告知学习C++/VC++的步骤和各阶段应看的书。 湖北的有查到分数的没有,怎么查,我天天晚上做恶梦,救救我! 能否请高手指教关于开在开机时屏蔽热键的问题(del+alt+ctrl)?高分送上! 请教语音卡高手:并线录音和串线录音有何不同?电压驱动和话音驱动有什么不同? 一个时钟周期是多长时间? 请问各位谁做过(正在做)用MODEM来录电话语音的?进来打个招呼,探讨探讨。 有人用过CIPAddressCtrl这个控件吗?怎么用?为什么MSDN上说它有一个GetAddress的方法,但我在使用中却找不到这个方法? 请问广东省的高程成绩在哪儿查询,怎样才可以查询到呀???? 运行时的这个异常提示,什么意思?如何解决 关于数据库的一个问题 tmd.江西的软考办的人吃虱去了。 各位大哥:如果在使用的时候,字体变大,是什么原因?有什么办法跟踪吗? 救命啊。。。。。。。高手该出手拉。。 可不可以在一个树控件中的一个节点下面再加另外一个结控件?怎么搞? a question about form evaluation about form evaluation 她现在就睡在我的身边,她长的很丑,大脑袋,小眼睛、身子特长腿特短,简直是一无是处,还让我守护着她睡觉,TMD我比死了还难受,好痛苦啊。。。。。。 在excel2000中,如何在单元格中画对角线(就是常见的表头)? 如何使win98登录WIN2K server中? 各位大哥,请问怎样汉化C++Builder中的英文提示框(祥见内容部分)?谢谢! 请问怎么在sqlserver的用户子定义中是用循环啊! 真奇怪,我只是想通过accept得到的sockaddr_in来得到的IP再用gethostbyaddr得到主机名,但是死循环,请我看看错在哪里?我给分的 quickrep建立的报表,一对多表如何设置,为什么我设置报表的dataset属性为从表时,预览出现主表数据无法显示出现unkown错误,而从表可以。 怎样让“星际”通过代理服务器上网? oracle优化 用ADO控件操作数据库,对于关键字重复错误如何捕获? 深圳的朋友,有没有人知道深大通信(深大电话)? 急!!!!!!!!怎样将excel导入数据库(access),重要的是要能在修改后返回excel?而且excel表中的几张表的表头格式不一样? 考考你的UNIX/C 请问server.htmlencode()有什么用处?? 喜欢听白桦林吗? 不好意思,问个问题! 请问如何在下拉框中添加图片?有重谢! 50元找一控件.(在Delphi中怎样把JPG文件插入到SQL Server数据库的Image字段中) 偶想做pb的登录界面,就是填入正确的密码账号方可使用软件,偶把主创体设为mdi frame,登录子窗体为response,但是运行后,不登录子窗体,主窗体也能使用(菜单有响应),怎么版?另外,子窗体右上方的 x 键怎么去掉?//牛虻 在一个页面里调用两个存储过程,并对其中一个存储过程的记录来控制分页显示,请问如何实现 什么地方会用到压力/温度/流量/液位开关 有电路的叠加定理知道,使用叠加定理时,不作用的电压电流源都置零其中电压源处用短路代替,电流源处用开路代替.好了,那么是否意味着电流源所在支路就被视为断开了? 这个虫子是蜱虫吗? 电阻与电压和电流的关系 电路叠加定理电压源为什么置零,电流源为什么开路我想知道原理,有例子说明就更好了 这是什么虫子? 电阻上的电流跟两端电压有什么关系 叠加定理适用于线性电路,电压,电流和功率均可叠加.理由 请问下这是什么虫子,一厘米左右,六条腿,前面有对夹子. 电阻电压电流之间有什么关系 蚊香有毒吗,睡觉的时候经常用蚊香好吗 1小时是什么数 计数 测量 人类的地球有没有第2次文明 如果蚊香有毒,那是什么毒,每晚睡觉时点蚊香会对身体有什么伤害? 发电机发出的是电压还是电流 炼铁的主要反应原理是在什么条件下 电热蚊香片有毒吗 数字定时器的设计!要求用数字电路实现,定时最大为2小时,最小为1分钟. 化学方程式中的反应条件怎么写啊?有什么规律,谢谢啦~ 什么是红外,红外的原理是什么? 电压控制的电压源和电流控制的电路原在都表达成电压么?如图 酸碱盐的反应规律及条件 红外线的原理有多少说多少,越多越好 msp430 定时器 连续计数模式在连续计数模式下能改初值吗?tar,试验起来感觉能改但改的效果不对呢.书上的意思不是很明确. 神经条件的基本方式是反射,反射是指人体通过——对——产生有规律的反应 谁能告诉我红外测距原理及应用具体是怎样的? 数字定时器设计基本要求:60分可以定时显示现在定时的时间高级要求:40分可以倒记时 酸、碱、盐之间的反应有什么规律?是否全都能反应?条件? 为什么红外线有热效应?求原理! 清洁能源包括哪些 现在的蚊香有毒么 什么是大陆文明?什么是海洋文明? 清洁能源有哪些?氢能源算吗? 压力传感器型号的数字字母代表什么意思?就拿Dynisco来问,型号是PT460E-5M-6/18 其中的5M代表什么?还有其他数字?还要PT4624-M18-5M-6/18这其中的M18又什么意思? 黑格尔认为大陆文明和海洋文明存在着哪儿些不同 使用绿色能源有哪些好处 如何选择压力传感器?应注意哪些参数? 蚊香是不是有毒? 绿色能源有哪些 汽油机机油压力传感器0.3-0.6bar参数是什么含义 什么是马克思利率理论? 关于此电路图中串联并联各电压电流之间的关系 1.我不太明白4个电阻之间的串并联关系,如何看出此图哪个电阻是并哪个电阻是串的方法? 2.r1上的电流900mA 9V和r2,r3,r4上的电流300mA,3V是怎么计 请问压力传感器技术参数中 Pressure Cycles 指标是>100 Million,怎么算作一次? 为什么以马克思主义为理论基础 探究海洋文明与大河文明各有何特点 运用哲学原理论述"我".1200字左右 马克思主义根本的理论特征表现在哪些方面 海洋文明与大河文明的区别 马克思哲学原理概念是什么 如题,马克思主义普遍原理是什么 探究海洋文明与大河文明的特点 角反射器是什么原理? 没有革命的理论,就没有革命的运动,这句话直接体现的哲学原理是什么 试题1 (6分)【108020】 温家宝总理曾在《人民日报》上发表了题为《仰望星空》的诗文,这里的“仰望星空”其本来含义是指( ).A. 胸怀远大理想B. 前瞻性的思考未来C. 注重理论研究与创 硝烟反应的原理是什么? 从理论基础的角度看,中国梦体现了马克思主义哲学的哪些原理在考试 电路如图所示,电流源的端电压U为多少? 电磁流量计能显示温度和压力吗?能不能把温度和压力的数据采集出? 什么是哲学原理 海洋文明的性格特征是什么?高一第一学期历史内容:海洋文明
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn