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

利用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 下 调 试 通 过。

重塑微软:Satya Nadella开启整合之路 推送工具个推完成B轮数千万美金融资 娱乐行业数据化 ABD爱梦娱乐发布大数据引擎产品 增强现实:10大AR应用窥探移动未来 LBS的硬件创新:高德LBS智能硬件编程马拉松圆满闭幕 2014优秀微信开发商评选上线 首批旅游汽车电商房产等行业应用出炉(表) 让梦想照进现实——宝马百度编程马拉松闭幕 IXDC大会:移动交互设计精髓——用户体验 想辨析“马航”等事件真伪,有很多技术和工具可以使用 两倍于IBM的基础设施投资,Google大力发展云服务 听云平台发布移动应用性能黑洞报告 微信开发者大会陶瑾:如何玩转微信支付功能的原理和开发 560亿PV+7.3亿用户,Reddit是如何做到的? 打造安全界的希波克拉底誓言文化 极客的春天来了! Mozilla COO宫力:老牌操作系统如何助力新一代智能电视 App提高用户留存率新招:应用性能监测 韩国手游市场规模超万亿 2014中韩手游项目对接会开幕在即 SanDisk发展之路:专注SSD、推新产品线 AMD发展线路图曝光,欲造500+平方毫米GPU 全球移动开发者:IAP降温,企业应用成待掘金矿 Vuforia 2014 视觉大奖赛:寻找最炫酷AR增强现实应用,迈向巅峰! MapReduce谢幕,谁将成为最终的接棒者? 变身音乐控制器!开源JavaScript库NexusUI 从112台服务器到Q2 50亿基础设施开销,谷歌只用了15年 【技术文章】微信公众平台开发教程新手解惑40则 Qualcomm承诺投入1.5亿美元 扶持中国初创企业 物联网多了把“新板凳” 联想推三款智能硬件 .NET技术+25台服务器怎样支撑世界第54大网站 基调网络发布听云平台:“听”懂App性能 《近匠》豌豆荚李大海:用搜索敲开手机娱乐平台之门 微信开发HTML5轻游戏中的几个坑 连接时错误,重定义问题 祝水圆兄弟姐妹们节日快乐!嘿嘿! 关于木马的问题 在DELPHI的图象处理中,怎样将GIG转成BMP或BMP转成GIF,各位大虾帮帮忙! 谁有SCO OPENSERVER开发平台的Licence? [给分]请 playking(风雪青松) 来拿分 我的朋友有一个很急的问题! 如何在DELPHI中使用RealSystem Producer ActiveX Control 100分求winsock pbl(pb7.0) 菜鸟问题:一个关于api的别名问题!谢谢!!! ===菜鸟系列===:CSDN上没人了吗?为何无人能回答我的问题???????????? 请教:SQL中动态数据表如何进行查询? 如何将object转化为int?? 讨论:你是从IDL开始所有的编程工作吗? 修改弹出的OPEN对话框? 第二个页面中的FORM怎么传值给第一个页面的隐藏控件?不用SUBMIT 在LotusScript中,如何实现将附件保存于服务器的某目录下? CSDN说这里人气低,决定关了这里,大家快来说话啊,真关了我们就没地方说话了 如何将int转化为char? 如何实现窗口中拖放. 如何确定一个数据窗口有几个参数 数据库程序的运行环境问题求救!!! 寻求vb例程 如何用VB6控制NT的服务 try和catch的问题? 求助~!关于FileListBox的问题 请问要在Web页面中放置ActiveX控件,是不是一定要数字签名才能在客户端安装? 表格内容对齐 where can download the crack about Rational XDE Professional v2002 .Net Edition? 调查:现在大家所用的中文输入法是什么?录入速度是多少? 数据库程序的运行环境建立问题求救!!! 伙计们,帮我看看我的安装差在哪一步了,为何多系统下Linux起不来 如何将文件输入流转化为string? 关一个Servlet调用另一个Servlet的问题 有关报表的一个小问题。 怎样才能做繁体版? 100分请教PHOTOSHOP5.0是如何把CMYK颜色转成RGB显示的? 需求进销存或分销 如何替换某字符串中的指定字符串!!! tcp/ip 如何获取文件的创建时间? 如何再98中删除IE的历史纪录,很怪~~~~~~~~~~~! 讨论:从IDL开始所有的编程工作 大虾们如何动态创建Table的field Editor功能 高分求解!与Delphi的参数问题! xml spy suite4.2需要联机注册,有没有方法可以使用? linux为何没有出现在启动菜单 @_@ 在DELPHI中如何把一目录下的某文件移到另一目录中——急 在C#中如何用BinaryReader把DLL文件的内容读出来,并转来string? 如何根据Task ID或Process ID得到hwnd 如何让程序启动时自动hide()阿! 关于成长类作文的素材 关于努力、心态的作文材料(要新颖的) 唐朝诗歌繁荣的条件有哪些 成长类作文的素材我需要关于成长的文章素材(记叙文的),要是题材新颖一点的写作素材. 钢板承受力计算我有一汽缸压一标件,压力面积是6CM的圆形.压力约为2吨受力面积是一块25CM*25CM的钢板,中心受力,受力钢板厚度应最小选择多少 描写唐朝盛世景象的诗句 小明家的客厅长6米,宽4米,现在准备要铺地砖.下面有两种规格的地砖,选择哪种地砖较省钱?A地砖:边长0.2m每块3元 B地砖:边长0.5m每块12元 求奋斗作文素材要能与陈欧体结合的素材!:你只闻到我的香水,却没看到我的汗水; 你有你的规则,我有我的选择;你否定我 的现在,我决定我的未来;你嘲笑我一无 所有不配去爱,我可怜你总 角焊缝焊接耗材长度如何计算 在一个长方形的花坛四周铺上宽1米的小路.长是20m,宽是15m.问小路的面积是多少平方米? 某班男同学的人数是女同学的2倍,在一次数学测验中,男同学的平均成绩是84分,女同学 的平均成绩是90分,全班的平均成绩是多少? 描写春天的诗句(唐朝的) 一间教室的地面长8米,宽6米,需要用多少块4分米的地砖来铺地? 写一句体现大街上热闹的句子当句子不能出现热闹2字 在一个圆形花坛的外围修一条1.5m宽的小路,已知外圆的直径是10m,求小路的面积. 给一间教室铺地板砖,所用的地板砖与( )成反比例 A.每块砖的变长 B.教师的面积 C.每块砖的面积如果a:3=5:b 那么a和b成( ) A.正比例 B.反比例 C.不成比例正方体的表面积和其中一个面的面 议论文《拼搏与奋斗》该怎样写议论文和说明文是否相似 一个圆形花坛直径为4M,现在要在花坛周围修一条1.5M宽的小路,求小路的面积. 一件有意义的事 作文 开头结尾要优美 写一句体验节日热闹的句子,但句子中不能出现"热闹"或"闹"字如题 公园里有一圆形花坛,花坛的直径是7.5m,在它的外面铺一条宽1.5m的小路.这条小路的面积是多少平方米. 某小区要给一块正方形空地铺地砖,原计划用边长为2分米的正方形地砖来铺,需要2500块.后来改用边长为4分米的正方形地砖,需要多少块这样的地砖?(这是问题) 关于努力的议论文急----------------------*////***---*****//*------------**//////◎#¥%!……※(!》》/*- 某一学习小组有12人,数学考试时有10人参考,平均分是81.5,后来,缺考的小明和小红补小明的成绩比原来10人的平均分少1.5,而小红却比12人平均分多12.5分,小红考了多少分 给一间房子铺地砖,如果选用边长是3分米的正方形的地砖,需要1000块.如果要用边长5分米的地砖,需要多少块?用比例解 描写热闹的句子8个,不超过10字最好. 一个学习小组有12个同学,一次数学考试,李平请假,其余11人的平均分是85分.后来李平补考,成绩比12人的平成绩还高5.李平考了多少分? 求好的初中作文素材!关于快乐的!亲情的!太假的不要!急. 在一个长20米,宽18米的长方形花坛四周铺上1米宽的小路,求花坛的面积? 写一句体现节日热闹的句子,但句子中不能出现“热闹”或“闹”字顺便再告诉我物流的通俗说法 急求好的初中作文素材!适合初中生的,最好是关于亲情,友情,师生情之类的,太假的不要最好是新一点的素材(不需要太多,不一定要整篇文章,只要有好的材料就行),先谢谢啦 1、 四年级A班有学生50人,男、女生各25人.一次数学测验,全班同学平均分为85分.如果男、女生分开计算,女生比男生的平均分高2分.男、女生的平均分各是多少分? 房间地面是一个长方形,长5米,宽4米.打算铺地砖,需长40厘米,宽25厘米的地砖多少块?多少块? 钢结构10.9s高强度螺栓和螺母的材质是是什么 关于奋斗的作文素材 大街上真热闹,…….(围绕热闹写)补充完整句子,怎么写? 作文500字 自己努力与借助他人的作文素材简短的最好,五个.谢谢了! 求写一篇春节前的作文! 写一段描写城市夜景的段落,200字左右就可以了. 写奋斗的作文素材,5条 学校运动场占地四分之一公顷,其中跑道占八分之一,活动场地占三分之一,其余的是绿化带. 找几句描写城市夜景的句子描写城市霓虹灯下夜景的句子,多多益善. 校园景色 词语校园景色 词语 句子和段落。 校园里的绿化面积是4分之3公顷,平均分成6块,每块绿化面积是多少公顷箱子里有糖果12分之11千克。如果每12分之1千克装一袋,那么要装几袋?帮我把这道题的单位“1”写出来 描写城市夜景的句子要符合实际点的 关于书法的作文的好开头,快啊! 一个圆形花坛,它的直径是8米,在它的周围铺一条宽1米的环形小道,环形小道的面积 “我做了一件有益的事”或“我长大了”作文,给些新颖的素材,一定要新! 我找到了最美的人 作文开头结尾 在半径为2米的圆形花坛周围,铺一条宽为1米的环形小道,这条小道的面积是多少? 要给一件长8米,宽6米的教室铺地砖,现有两种不同的地砖,A种地砖的规格是40厘米×30厘米,售价每块10元,B种地砖的规格是20厘米×15厘米,售价每块8元.那种地砖更便宜?需要多少钱?快,有悬赏 快, 谁能帮计算下1605mmX935mm 8个厚的Q235-A钢板承受力计算.最好能给你一个详细的计算过程. 一个花坛直径5米在它的周围有一跳宽1米的环形小路小路的面积是多少平方米? 描写古代商业城市繁荣的古诗?例如:描写长安城,北京城,汴梁城,金陵城等城市繁荣的诗歌 有关奋斗的作文素材 在面积是21平方米的房间铺地砖,地转的长是2/5m,宽是3/10m,铺满这个房间,至少需要多少块砖? 描写城市繁荣的诗句不要古诗里的,但对仗要工整 钢铁承受力怎么计算如题 唐代写风景的诗句
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘