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

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

Chromebook Pixel,揭开谷歌云世界的大幕 惠普:第一财季净利12亿 同比仍在下滑 谷歌发布超高清触屏笔记本Chromebook Pixel 传谷歌正开发触屏Chrome OS笔记本 今年或上市 估值25亿 视觉社交网站Pinterest融资2亿美元 跨平台开发框架Xamarin 2.0发布 移动新趋势:扁平化设计 vs. 拟物化设计(上篇) 杂谈 App Store 之 HIG 与 Objective-C 为什么苹果三星将主宰智能电视未来? 罗永浩可爱多:Smartisan OS即将发布 春晚 VS. 移动应用:用户注意力统计报告 Twitter发布BootStrap 2.3版本! 面向对象编程从骨子里就有问题——看看名人大家是如何诋毁面向对象的 开发者及团队能从LibreOffice那里学到什么? 8000美元存储135TB数据:打造开源的存储硬件 Bing,每月27亿的有效搜索不及僵尸网络的一半 为什么说Amazon的James Hamilton是“可遇不可求”的? Facebook背后的数据团队 红帽将产品转移到Apache社区 Impala是如何提升3~90倍查询效率的? 云中保障数据安全及完整性必须防范的遗留问题 VMware推出移动性平台:VMware Horizon Suite 移动周报:全球最大校园Hackathon的参赛宝典 Unity3D首届游戏创意设计大赛开始报名 中国日报:向移动新媒体蜕变 C#五子棋程序设计 Mozilla宣布推出Firefox OS 面临四大问题 Ruby 2系列首个稳定版 Ruby 2.0.0-P0发布 微软改进Windows Blue搜索 系统或今夏推出 移动新趋势:扁平化设计 vs. 拟物化设计(下篇) 传奇程序员:Minecraft开发者Notch大神 请问以下我如何实现一个带滚动条的子窗口 问一下,resin和iis集成后class文件放在什么目录下 用 http://www.rc80.com (c# + sqlserver2000) 只想换一个.net 的完整的分页代码! 一个Corba客户端连接的问题! 如何在resin中设置wap服务器功能 大家帮忙!! 什么时候用DataGrid,什么时候用DataList? 怎么样从数据库里取得某字段的值??? 昆腾的硬盘修理找谁啊?急,UP有分........ www.webmatrixhosting.net免费空间中FTP文件上传问题 Apache 2.0.43 +Tomcat 4.1.24+mod_jk2-2.0.43.dll整合问题出现:The servlet container is temporary unavailable or being upgraded 我装的Delphi7好像丢了一个文件:Proxies.pas,哪位好心人给我一个? 人,真脆弱! 开水房追女之呕心沥血计划 (超暴笑) 孤独 急!!Image对象如何设置成为透明的???Thanks! 【憋的慌】大头、阳光呢!!! 关于FLASHMX的遮罩问题 一个问题,想不通! 【憋的慌】死水、一辉呢!!! 急!!!急!!!怎么在建表时使用一个时间函数??就是指出加这条这条文件的时间?? 【憋的慌】蓝心、风呢!!! 怎么获得一个应用程序的图标,比如我用进程ID,获得其主模块,然后怎么办! 【憋的慌】冰冰、贝贝呢!!! 我获得一个服务,可以检验综的状态什么的,可我想获得除了这个以后的东西比如:.... 【憋的慌】珊珊艾、CoolSlob呢!!! 关于adodc控件删除的求救 【憋的慌】冰儿、江风呢!!! 关于Apache wuxuan、kingzai、jemmylau各位版主,请问怎样才能得更多的可用分?我看有些人有几千分,真不解。 提示问题!菜鸟问题马上送分 请问哪有php安装程序下载? [散分]探望qxjavajava 使用gdiplus.lib出现下面的错误? 讨论MVC--Model这块的实现方法(不用EJB的情况)??还有那里有可以自动生成DAO和VO的比较不错的工具吗? 关于网络传销 关于个人bean的问题!!!! windows 2003 server 下为什么不能装sql的任何版本 挑战性问题:ToolBar为何在客户区?而MainFrameWnd的在非客户区?(高分) 一个奇怪的问题 再搞不定我要自杀啦。。。。。。。 求助!测试数据库的师傅来看一下啊(adodc 对象编程) 请问,图书怎样分类,分哪些类比较科学? 推荐几个比较好的C++的论坛吧 谁能帮我一下! 请大家帮助 给50分!!!!!!! 为水源200多位水友鸣不平,鄙视某人。。。 请教各位高手(菜鸟) 怎样把我的dll加到0x80000000以上地址? 200分谁知道,CRecordSet怎么样管理两个表 如何互相调用文件????????? 两地相距510km,两车相向而行,若同时出发,则5.1小时相遇,若乙车先出发2小时,两地相距510km,两车相向而行,若同时出发,则5.1小时相遇,若乙车先出发2小时,则驾车出发后四小时相遇, we bought one kilo of cheese .(就画线部分提问) cheewe bought one kilo of cheese .(就画线部分提问) cheese did you buy ? 替米考星,替米考星厂家,替米考星价格?以及应用? Let the boy --------[not leave】at once. How does your cousin spend her holiday?(用they换your cousin)改写 谁对兽药原料—甲磺酸加替沙星比较了解?帮忙介绍一下,谢谢! 求初一素描科幻画 本人只会素描! she began practicing her guitar skills for several hours each day,__when her fingers began tobleed.A.stop only B.stopped only C.only to stop D.only stopping答案为什么是D?C怎么错了? 氨苄西林钠原料药,兽用级,生物快车兽药原料直销处的产品怎么样? a,b两地相距510千米,甲,乙两车分别由两地相向而行,诺两车同时出发五又十分之一小时相遇,诺乙车先出发2小时,则甲车出发4小时后相遇, family当家人讲时是可数还是不可数的? 我最喜欢的动物是袋鼠【两种】英译汉 How do you like hamburgers and potato chips? 详细解释下family什么时候可数,什么时候不可数,families是指什么 兽药招商怎么做 A B 两地相距510km,甲 乙两车分别有两地相向而行.如果两车同时出发,那么两车5小又十分之一 小时相遇.如果乙车先出发2小时,那么甲车出发4小时后相遇,求两车速度. 洗浴所说的大保健什么意思 candy的英语文章 The bady drinks milk every day(对milk划线部分提问) eat,amy,an,doesn,it,ice-cream.连词成句 用50N的水平向右的力把质量为3千克的木块压在竖直墙上,这时木块正顺着墙壁面竖直向下匀速运动………请给出比较明白的解析,尽快,用50N的水平向右的力把质量为3千克的木块压在竖直墙上, My uncle drinks milk every day.一般疑问句并做肯定回答 Jenny is too fat,____ she doesn't eat ice-cream.A.and B.butC.so D.then选哪个? The Dragon Boat Festivai是什么意思?我急,能不能快点! My son has many milk every day .那错了?怎么改?呜呜~(>_ 放鸽子比喻什么 元稹 闻乐天左降江州司马 My sister has many milk every day改错 被放鸽子是什么意思? -What's the date today?-It's June 16.-Already?Then it's Dragon Boat Festival today.Already意思 你不会不觉得跑进家来的小松鼠是可爱的吧?什么意思? 什么叫放鸽子?假如说你约了她,却因为有事情打了电话给他,跟他说,他又同意了叫放鸽子吗?(他还没出门) 世界上主要哪些国家和地区的人们信奉伊斯兰教 weekends,does,spend,his,how,brother,his(?)连词成句 “放鸽子”是什么意思啊? “阿拉伯人的世界”在哪里 some fruit 可以用单数也可以用复数吗?有何不同? 仿照 山中访友 中的拟人句描写山中的一个景物 现在世界信奉伊斯兰教的人约有多少? 关于机械能守恒以相同的初速度Vo 将物体从同一水平面分别竖直上抛、斜上抛、沿光滑的足够长的固定的斜面的表面上话.三次达到的高度分别是h1、h2、h3,不计空气阻力,则h1、h2、h3的关系是? “放鸽子”是指啥意思? (三字经)中与不耻下问有关联的是哪句话 提问 有关机械能守恒什么时候机械能一定不守恒啊 怎样锻炼自己成为有恒心有毅力的人怎么都是方框啊 一群孩子在乘坐旋转木马,奇奇在旋转木马上玩的很高兴,他提出下面的问题:“如果把我前面的小朋友的个数的三分之一加上在我后面的小朋友的个数的四分之三正好是乘坐旋转木马小朋友 你不会不觉得跑进家来的小松鼠是可爱的吧?改为陈述句 他是个很有毅力的人 英语怎么说 为什么坐在旋转木马上的小孩处于加速状态 用肺呼吸,产有硬壳的卵来繁殖后代的动物是什么快! 跑进家来的小松鼠中哥哥掏出手套会怎么说 怎样成为一个有恒心、有毅力的人?怎样做,才能改变自己的懒散? 除猫头鹰外,其它大部分猛禽是不是也像鸡那样只能白天活动,晚上看不到东西,睡觉? There are (two glasses of)milk on the table.对括号内提问Millie watches TV for two hours every week.改为同义句改为Millie watches( )( )( )TV every week 求详细回答,如何才能成为一个有毅力有恒心的人? 不可数名词是不是前面不能有冠词 那不可数名词可不可以什么都不带 好像He told me news 这样可以吗 we bought one kilo of cheese .(就画线部分提问)we bought one kilo of cheese . (就画线部分提问) cheese did you buy ? How does your friends go to school?中哪里错误 She wants (one kilo of)meat对括号部分提问 填空:( )like one kilo of oranges and two kilos of grapes.(in de shop)A.what can I( ) for you,sir?B.( ) like one kilo of oranges and two kilos of grapes.A.( ) else?B.No,thanks.How much do they( A.twelve yuan,please.B.Ok.thank you.here's the ( 从3件外观相同的物品中找1件物品(质量比其它两件轻),至少要用天平秤几次才能找出来? 美国三名亚裔居民涉嫌种植窝藏销售大麻克里叹美政府关门损形象 他国外交官欲60克拉绝美粉钻将拍卖 或成全球最贵美军1美分贱卖超级航母 曾爆炸致百余美媒:斯诺登掌握美搜集中俄伊朗等国情中国最好的音响师揭秘如何制造好声音普京:乌克兰与欧盟结盟后不会加入关税墨尔本医生因与患者有不正当关系被吊销美军1美分贱卖超级航母 曾爆炸致百余60克拉绝美粉钻将拍卖 或成全球最贵普京:乌克兰与欧盟结盟后不会加入关税墨尔本医生因与患者有不正当关系被吊销故宫食堂发生持刀伤人事件2人死亡 嫌千年悬空寺被指因煤而“悬” 当地回应六名赴朝韩国人已回国 将面临韩国当局美国尼米兹号航母进驻地中海 称随时可陀螺般从早忙到晚 1/5澳洲人没时间美“毒妈”扯伤儿子阴囊用胶粘合 恐遭美媒:斯诺登掌握美搜集中俄伊朗等国情埃及性侵泛滥 美民间组织绘制“性侵地浙江绍兴纺博会创新思路 外商采购看重标题导航标题导航标题导航关掉一半的化肥厂、80%的农药厂标题导航标题导航标题导航标题导航标题导航标题导航标题导航标题导航标题导航标题导航标题导航公益推广中心“寻人启事”标题导航韩国沉船事故遇难人数升至46人 失踪不让须眉 更显柔情 记全国三八红旗手台江县着力打造特色农业品牌助农增收致图文:可喜!19个月来客场首胜可贺!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘