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

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

PayPal前CTO 在美国改变世界的乌克兰犹太人 放弃Bootstrap&amp;amp;Foundation,迎接Semantic UI? 一键分享:iOS版Google+发布SDK InMobi杨娟:中国移动游戏如何挑战全球? Adobe再遭APT攻击:数十G源代码及290万用户信息失窃 程序员,如何在工作中崭露头角? 国内外三个不同领域巨头分享的Redis实战经验及使用场景 这是一场潜在的战争:谷歌与Facebook、苹果在搜索上的博弈 设计新闻类网站需要注意的关键点:移动友好、宽带…… 直接开始用:5个免费的在线思维组织工具 招聘开发者常见的九大误区 开源影响销售,维护赞助商? 盘点黑客攻击途径:最常用的7个策略及简单的防护方法 专访AngularJS框架创始人Misko Hevery:让Web开发更便捷 果粉的又一个节日:新iPad或于10月22日发布 新车间李大维:到集装箱里来看创客嘉年华 亚马逊推“登录与支付”功能 直接冲击PayPal Google编程之夏新里程碑:5000万行源代码 8500名学生开发者 非常实用的15款开源PHP类库 Runnable:一站式代码片段服务平台,打造编程界的YouTube 谷歌向所有开发者开放Google App Engine PHP Runtime “沟通”电子表格和矢量图形的“桥梁”:在线可视化工具Raw Facebook北极圈数据中心,Open Compute Project的力作! 最后三天!4折抢购2013移动开发者大会门票 电子书追踪统计,App Annie for eBooks上线 先驱还是模仿者?细数海外移动应用推广平台 IDC:PC出货量下滑终于放缓 联想销量再次第一 为什么说,用一块屏幕玩游戏是远远不够的? 编写代码?先熟悉一下编程语言界限吧! Spanner vs. F1:谷歌两大数据管理利器的整体对比及关联 移动设计需摒弃的几大PC应用设计方法 ado连接sql库问题 为何无法ping自己的地址呢? 滚动条判断 单个窗口程序可以运行,但是几个窗体连在一起就不可以了,好像是多线程的问题,请教各位 关于DBgrid再次求救 今天我好失败——斑竹过两天删除吧,让我宣泄一下 哎呀!!各位何必拉帮结派呢!!!这样不好啦!!影响水园大团结啊~~~没有加入帮派的人就很难在水园呆下去啦。。猪猪。。只有和他们沦为 CreateBitmap 与 CreateCompatibleBitmap 弹出一个窗体但是又不抢占其他窗体得焦点,怎么办? 利用DW-MX制作ASP.NET程序教程! vc中 调用 VB dll 时参数类型如何确定? 谢谢! 如何才能得知当前路径?比如VB的App.Path? Conn.OpenSchema怎么得到字段的信息? 一个进程写在共享内存中的数据被另一个进程读出去后的问题 大家开心开心吧! 笑过后体会体会...... asp与数据库连接的问题?急,急!(在线等待) 大家是怎么查VCL类库的类及函数的? 在线程里有无限循环时,好象不跳出循环就无法终止线程,是吗 UNIX的线程有没有类似Windows线程的消息队列和消息机制? 哪位大虾知道如何在网页中快速刷新显示后台计算的数据? 请问有谁知道PrinterResolution怎么和打印机对象连在一起呀, 偶有一个惊人的发现! 对话框中的按钮我怎么让它继承我自己的类? 请问有谁知道PrinterResolution怎么和打印机对象连在一起呀, 装了腾讯的浏览器现在删了 可是用cterm点击里面的网址还会调用腾讯的浏览器 如何修改注册表 那个键值? 电子邮件的问题 怎样给为我解答问题的注册用户打分? 谁做过这样的新闻系统! 为什么RealPlayer放有些网站的流媒体文件时会出错? 请问什么地方有软件开发标准。如国标,国军标等。 如何取得读网页时ie的状态,如正在下载,完毕等等? 朋友们能不能提供我一些关于VC读取文件操作的资料? 关于数据库服务器和备份的问题 win2kPRO 简单问题,高分相送!!在线发分,第一个答对者,定送此分!!!!!! c程序总出现"out of memory..." bzszp(蝎子)和ATCG(ATCG),谢谢!请问可以给我你们的E-mail吗?我以后还有些问题想请教你们! 如何设置java环境 更改工作站的下载等权限 制作一个修改程序外表的东西 怎样ENABLE 注册表编辑 MFC向导生成的基本对话框程序,一按回车就会退出,怎么设置都没有用.怎么办? 小弟下个学期就学vc了,想在这个暑假里好好的去接触接触但是不知道改看那些书好!还请~~~~~~~?高分!! 请问这个错误是什么原因啊? QMAIL高手:关于分页的问题,函数vauth_getall() 制作修改程序外表的东西 初学者学习编程什么样的学校比较适合? 制作修改程序外表的东西 原本对这个世界失望了,居然还发现还有和我一样善良的人,你让我有了活下去,继续灌水事业的勇气,谢谢给我捐献可用分的好人! ******初学者问题 ,如何实现2个Edit框同步******* 请问DataGrid如何和ADO控件梆定? 答案是CD,为什么AB不行呢? "海信"牌彩电(雨天)遭受雷击之后,能否修理好?我家的电视机,使用的是湖北潜江电视台的(白色的)有线电视节目传输信号线(从室外的水泥电线杆上面牵进卧室里面)连接到机顶盒上面,再通过机 物理12题, 一载有电流I的细导线分别均匀密绕在半径为R和r的长直圆筒上形成两个螺线管(R=2r).两螺线管单位长度上的匝数相等,两螺线管的磁感应强度大小BR和Br应满足(一)BR=2Br(二)BR=Br(三)BR=B 怎样才能测出电热管的电压?是湿烧管!我现在接的是220V的电,感觉烧水慢的很!我是面包醒发箱里用的,要不停地翻滚产生蒸汽! 植物对我们的环境有哪些净化作用 在地球赤道上空有一小磁针处于水平静止状态,突然发现小磁针N极向东偏转,由此可知A.一定是小磁针正东方向上有一条形磁铁的N极靠近小磁针B.一定是小磁针正东方向上有一条形磁铁的S极靠 CaCo3+CaO=我现在就需要,帮个忙,嘻嘻…… 一棵植物能净化多少空气 理想变压器的原、副线圈的匝数比为10:1,R1=20Ω,C为击穿电压为20V的电容器,已知U1同交流电最大值为200根号2 ,则下列说法中错误的是A.若在a、b两点间接电容器C,电容器C将被击穿B.当S断开时, 已知质点运动的轨迹方程为x=a+tcosθ,y=b+sinθ,t为参数,求质点从时间t1到t2经过的距离 在100m深的矿井里,每分钟积水9m3,要想不让水留在矿井里,应该用至少多大功率的水泵.答案是147Kw, 避雷针应当与建筑物的钢筋结构相连吗?避雷针应与建筑物内用电器的地线相连吗?为什么? 在一个方格纸上画一个面积是20平方厘米,并且底和高的比是5;2的三角形. 湖南这些天的天气状况怎么样? 某电视部门实行两种电费计价方法某市电力部门实行两种电费计费方式.方法1是使用峰谷电:每天8点至22点用电每千瓦时0.56元,22点到次日8点每千瓦时0.28元,方法二是不使用峰谷电:每千瓦时均 有趣的,英文形容词 某位宇航员随登月飞船登陆地球后,在月球某水平表面上方H高度以速度水平抛出一个小球,小球落回到表面的水平距离S,已知月球半径R,万有引力常量G,试求出月球的质量M 雨滴匀速下降,空气阻力与雨滴表面积和速度平方的乘积成正比,试确定雨速与雨滴质量的关系. 谁能提供一些比较搞笑的英文单词`````` 土壤中空气的体积分数的测量在“测量土壤中的体积分数”实验中,如果在第三步骤中所加水的体积是925毫升,在第四步骤中所加水的体积是800毫升,则该土壤中空气的体积分数是25%.这25%是怎么 初中化学所有化学式、要汉译、如硫酸HCL、全部 、别打错了 有意思的英文单词有意思的英文单词,不是解释“有意思” 我感觉答案不对 请帮看我哪错了怎么把图片弄大啊 我传的图片挺大的啊 可以看清 可传上来的就很小了 丙稀酸如何能发生氧化反应 SOS 有趣的英文单词快 丙烯酸如何进行氧化反应? 描写校园的优美句子 英文单词“有趣”怎么拼 丙烯酸可以反生氧化、取代反应吗,还可以与钠反应吗 给我几句描写校园美丽的句子就一句就行 电热管加热管有什么区别吗 湖南天气怎么样 开启啤酒瓶盖时,瓶口有生成这白雾主要是瓶内水蒸气对外做功放热液化,还是瓶外水蒸气遇冷液化? 若干克碳酸镁与碳酸钙的混合物,加热分解后,剩余固体中镁和钙的质量相等,则碳酸镁和碳酸钙的质量比是?好心人儿,帮帮忙,很急! 那边的气候如何? 啤酒开启瓶口时,会冒出一股雾气,为什么快啊, 将100克碳酸钙和碳酸镁混合加热至质量恒定不变时,得到残留物50克.求原混合物中,碳酸钙和碳酸镁各多少克? 湖南气候对皮肤好么如题 谢谢了 有哪些英语形容词结尾是some 电蒸汽锅炉加热与电热管加热对比 水管中水流的速度和水管的长度是函数关系么?好心者搞一下, 以ive结尾的英语形容词谁帮我啊.急 碳酸钙和碳酸镁的混合物 氧元素的质量分数为56% 求碳酸钙的质量分数给个范围 一道数学题 管道中水流速度a m/s,那么每小时的流水量Vm^3与水管直径d m 之间函数关系式 谢谢请详细说明 已知曲线x=2pt^2,y=2pt(t为参数,p为正常数)上的两点M,N对应的参数分别为t1,t2,且t1+t2=0,那么/MN/=?我们假设M(x1,y1),N(x2,y2)则x1=2pt1^2,y1=2pt1,x2=2pt2^2,y1=2pt2因为t1+t2=0,所以y1+y2=0,且x1-x2=0 这个怎么得出的? 谁可以告诉我具体的碳酸钙和碳酸镁纯概念是什么?对身体有什么不好的?如果人喝了这样的水对身体有什么坏处? 用手将一重为6N的物体全部压入水中,物体排开的水的质量为1kg,此时物体受到的浮力为多少?10N可以吗? 一列横波在x轴上传播着,在t1=0和t2=0.005s时的波形曲线如图所示.(1)由图中读出波的振幅和波长.(2)设周期大于(t2-t1),如果波向右传,波速多大?如果波向左传,波速又多大?(3)设周期小于(t2-t1].并且波 12题是什么,我错了吗 用手将一重为6N的木块全部压入水中,木块排开的水重为10N,此时木块所受的浮力为多少N?放手后待木块静止时木块所受的浮力为多少N? 把曲线T1:y=tan(ωx)(ω>0)向右平移π/6个单位后得曲线T2,若曲线T1的所有对称中心与曲线T2的所有对称中心重合,则ω的最小值为A 1 B 3 C 4 D 6答案是B 为什么?请详细点. 看看这道题是不是答案给错了.如果我错了,为什么? 额定功率65W的空调扇一个小时能用多少度电,电费的0.98一度 过氧化钠与二氧化硫的反应怎样证明有硫酸钠生成?若量得过氧化钠的质量为m1,充分反应后固体的质量为m2,则固体全是Na2SO3时,m1与m2的数量关系,固体全是Na2SO4时,m1与m2的数量关系?固体一部分Na2 12题 A我不能理解怎么是错的 第六七两题选择题,物理,磁体与磁场的 在不断发生电闪雷鸣的雨天里,为避免电视机被雷击,采取的简单措施是A.关掉电视机B.关掉电视机,拔掉电视机的电源插头C.关掉电视机,拔掉电视机的电源插头,把天线接地 什么植物对室内的空气起净化作用`谢谢了,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘