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

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

百万用户时尚分享网站feed系统扩展实践 Twitter上市首战告捷的四大因素 大幕将启!MDCC2013移动开发者大会下周召开 TUP第30期:微软资深专家论如何用Visual Studio开发iOS、Android应用 [开源推荐]Riot.js:不足1KB的MVP客户端框架 研发周报:最难忘的Bug调试经历 NSA如何侵入Google和雅虎的私有数据网络? 飞天5K:开放比开源更有意义 MDCC之移动娱乐游戏峰会:手游金玩奖即将揭晓 开源巨人火狐浏览器:9周岁生日快乐! 感受OpenStack Summit香港大会 渣打科营中心:创建以技术为核心的企业文化 抱怨IT公司人才缺乏?留住现有人才方是正途 专访Esri中国区技术总监:打造新一代WebGIS平台 TIOBE 2013年11月编程语言排行榜:C#、Transact-SQL及VB.NET厚积薄发 透过KitKat,Android或与ChromeOS融合? 利用Spring Data Neo4j搭建推荐系统 七丽借百度SiteApp移动化 分发及变现能力获大幅提升 Go语言4岁了 生日快乐 谷歌发布Web延迟基准测试工具 专访JS-Git创始人Tim Caswell:让Git运行于任一平台 一段代码引发的思考 2013年美国开发者薪资调查报告 MDCC之移动娱乐游戏峰会:金玩奖揭晓最火游戏 算法为王:且看Mac Mini如何超越1636节点的Hadoop 鲍尔默成大善人?微软正式废除员工排名评审制度 工信部软件司副司长陈英为MDCC 2013大会致开场辞 全民移动•重塑世界 2013移动开发者大会盛大开幕 泯灭Web App可用性的七个开发错误 保益互动创始人曹军:听到的世界更精彩,盲人应用背后的故事 Gumi公司CEO国光宏尚: 大公开!日本手游市场攻克方法! 关于对象序列化问题 怎样让返回值为自定义结构? 怎么在对话框上面话线? 请解释一下跃点数 小问题一个,但是需要高手................. 我想把公司的网站改放到公司,该怎么办? ——如需要还有很多分送 请帮忙,我自己觉得问题很难(特急)!!!!!!!!!!!!!!!!!!!! 明天我哥结婚,我很开心啊!!! 我想把公司的网站改放到公司,该怎么办? ——如需要还有很多分送 关于存储过程和触发器的问题?(高分求助) WIN2000机器上ADSL,另一台linux下如何做ADSL的代理让局域网中机器上网! 为什么新生成一个session对象后,jsp page中的scope=session的bean会不正常? ★★oracle中ora-04031错误 请问:在安装MSSQL2000 时(因为公司的电脑是对等网的原因)我装完后出现以下错误: 我应该去东软吗? 请您帮我诊断一下! 如何共享已打开的设备 rs.open sql,conn,3,2参数含义? 我应该去东软吗?? 求救~~~~安装完WINXP,进入系统前会出现错误窗 怎么现在没法用search了? 一个菜鸟的问题,关于事件的加载 求救~~~安装完WINXP,进入系统前会出现错误窗 关于速度,效率,VB IIS ASP COM高手请进 我用extracticon将图标从exe文件中提取出来了,请问高手们,如何保存为ICO文件。 急急急,如何解决多窗口关联及激活问题!高分相送 请教一下,如何刷新ie浏览器,我用postmessage模拟按键F5,没成功,谢谢 怎么样把多个程序打包到一个文件中,然后怎么样释放出来!高分求答案(分两次给100分)! 为什么计算字段不能排序 我是新手,高手教教我吧!!! 如何激活oracle8.16的监听??? Domino Administrator 中的“配置”->“消息处理”->“网络域” C#究竟是什么东东?象C++还是象JAVA? 求dxdbtreeview 1.2 for d5 有人知道天津英业达吗? vb6如何结合DirectX编程? 怎樣才能把數據寫入BIOS中的DMI里去? 我要用vb得到一个EXCEL表格中的内容,经过数据处理再把数据写入新的EXCEL表格,如何实现? 心情不好,散分 我怎樣才能把mssqlserver中的數據庫導出到mysql中? >>有人知道天津英业达吗? 在VC中,如何编写Makefile,及如何用 .mak 文件编译,联接程序(来者有分) 我的电脑经常在使用时出现“EXPLORER出现非法操作即将关闭……”然后死机,怎么办? JavaScript一问!!! windows nt 的问题(急)? 如何设定paradox的自增长自段 关于报表中零值显示问题求助 那位知道控制打印机的win32函数,1、使其打印完毕不换页(卷纸) 2、以及换行的函数!!! 请问怎样捕获WINDOWS的文件拷贝事件? ■■请问WIN2000下对内存区的访问如何进行,类似于游戏修改等软件?■■ 内存分配不能分配?该用什么来分配内存? 做图象处理可以,作这个不可以? 清朝都有哪些亲王.郡王.!请详细说民.包括他门的封号.姓名. 我国第一位傲游太空的是谁 那件小事激励了我作文700字(小事要母爱或父爱)急求!谢谢!语言要生动!!! 那一刻,我感受到了_______比如母爱、亲情、孤独、痛苦、艺术的魅力……………………………………………………………………10分钟写完, 怎样用遨游打开我的空间 关于自信的作文要500字哦 父爱是一种怎样的感觉? 我和书的故事作文500字五年级要写你阅读了哪些书,看了哪些名著,不能抄袭 自信的作文 500多字 字不少于500多写几篇,谢谢! 我感受到了父爱 关于父爱的作文,写父亲为我做的事 五年级的 500字 百家姓里面有爱新觉罗这个姓吗?现在还有人姓这个姓吗问问 父爱如什么,让我感受到了他的什么与什么.不要网上已经有的 那是我们老师的范本 描写父爱或母爱的500字作文 古代皇室的姓氏在民间有吗?例如清朝皇室姓爱新觉罗,在当时的民间有姓爱新觉罗的吗 跪求《小学生日常行为规范》读后感400字 帮忙写"体验和谐感受快乐”“感恩行动—写给妈妈的一封信”“崇尚科学破除迷信”的手抄报及交通安全征文.手抄报帮忙找一些内容.交通安全征文围绕“保护生命,平安出行”的主题. 以感悟为话题的作文600字作文由一件事引发的议论抒情写几件事没有限制.不用写的很好很好但也不要太幼稚了 我与书的故事作文开头怎么写 征文活动以“理想、诚信、快乐、感恩”为主题.征文内容围绕主题,表达自己在阅读中所收获的情感体验和精神成长.内容可以包括阅读与成长的经历、阅读与理想的树立、阅读中的感悟和乐 以《感悟美丽》为话题,写一篇作文 我与书包的故事作文 我男朋友对我很好 ,家人都很喜欢他,可我对他的不是爱,感觉是感谢是的.我改和他分手吗? 遨游太空,可以见到美丽的地球,他是怎样的呢?请写下来写40字左右 我与书的故事作文怎么写我不会写我与书的故事作文 我想知道怎样做爱?要非常具体的!什么动作呀…感觉呀都说出来!感谢!对了…我女的… ()使人类能够探索宇宙的奥秘,遨游变幻莫测的太空? 我与书的故事作文要求是什么?急用!11!1 写读感恩父母的作文时父母的表情动作的 作文 写自己的故事作文500字! 和太阳聊聊天——作文(600字)500字也行(想象作文) 求宇宙遨游 音乐视频以超光速的速度带领我们遨游宇宙,依次看到月球、火星、小行星带、木星、土星、奥尔特云、星云、银河、大麦哲伦星系、仙女座河外星系、星系团、总星系等什么歌 我需要父爱 初一作文700字 求600字作文“聊一段快乐的往事”!要好的! 我与书的故事作文 麦克牵一只蜗牛去远行,可是蜗牛走得太慢了.麦克又是催促又是斥责,蜗牛只是很歉疚地摇摇头,表示无能为力.麦克又气又急,对蜗牛又拉又扯又踢,蜗牛受了伤越发爬得慢了.麦克只好耐着性子, 聊聊快乐的往事 作文 600字以内 初中写关于父爱的作文 600字左右写关于父爱的作文奶奶的 我爸在我9岁的时候就病死了,工作的原因各位同情同情我 600字左右可以编一些事,但他4年前就去世了,所以靠谱一点网上的我都看了, 牵挂为题的作文要提纲!要有一件事,不要抒情的!切记记记 求700字作文“聊一段快乐的往事”! 世界上最快乐的事,莫过于为理想而奋斗.读后感 以牵挂为题的作文 读 那桥,那河,那船 有感 聊一聊快乐的往事 作文要求不少于650字,快乐的往事不要写景的!也不要回乡下之类的~ 世界上最快乐的事,莫过于为理想而奋斗.这句话的理解 《桥之美》 “桥”美在何处?你对此有什么感想?从中得到什么启发? 有关父爱的作文500-600字 谁知道关于“我为理想而奋斗”的名言感悟啊? 小学五年级故事论文要200到100字的,要故事论文~~~~~~~~~~~~!急用!哥哥姐姐们快点! 校园运动会 感想强调是感想不是记事 世界上最快乐的事,莫过于为理想而奋斗.同学们,你们的理想是什么?你是从什么时候开始有这样的理想?为什么会有这样的理想?你又准备怎样去实现自己的理想呢?请用100字左右写下来. 一件开心的事作文200字 “人们从书中可以感受快乐,感受生活,感受人生”这句话的理解.今天就要 傲游的太空英文 一件高兴的事 作文400字以上 1篇感悟最深的快乐劳动体验作文 求父爱作文700字写慈父的不要下雨接放学的不要小学生作文有一定哲理的句子 内容不限 最后 我可拿了我一半的家底啊 作文好的再加悬赏 亲王和郡王的区别 人在太空中会发生什么有趣的事 跪求关于父爱的作文700字,急用,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn