荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: baty (新一代懒人), 信区: Database
标  题: ASP与ADO在Web数据库查询中的应用(下)
发信站: BBS 荔园晨风站 (Mon Mar 12 21:38:57 2001), 转信

【 以下文字转载自 baty 的信箱 】
【 原文由 baty.bbs@argo.zsu.edu.cn 所发表 】
发信人: pjzxm.bbs@bbs.eme.gliet.edu.cn, 信区: Database
标  题: ASP与ADO在Web数据库查询中的应用(下)
发信站: 漓江夜话BBS (Thu Feb 11 20:19:35 1999)
转信站: argo!news.zsu.edu.cn!eme.gliet.edu.cn!bbs.eme.gliet.edu.cn!EME-BBS
Origin: bbs.eme.gliet.edu.cn

           ASP与ADO在Web数据库查询中的应用(下)
- 这 个 应 用 所 要 完 成 的 是 对 港 澳 出 入 境 数 据 库 进 行 查 询 操 作
, 你 可 以 给 出 一 种 或 几 种 查 询 条 件, 然 后 按 你 的 要 求 显 示 查
 询 结 果。

  ---- * 确 定 数 据 源

  ---- 要 访 问 网 上 数 据 库, 必 须 首 先 设 定 数 据 来 源。 在 服 务 器
 上 打 开" 我 的 电 脑" 中 的" 控 制 面 板", 双 击"ODBC", 在" 系 统DSN" 下
 选" 添 加", 选 出 你 预 先 做 好 的 数 据 库 种 类、 名 称 和 位 置。 我 这
 里 要 用 到 的 是FoxPro 数 据 库, 数 据 源 名 称 为GACX, 主 数 据 库 名 称
 为visa.dbf, 编 码 数 据 库 名 称 为zd.dbf。

  ---- * ADO 数 据 库 的 使 用

  ---- ADO 数 据 库 的 设 计 方 法 是 先 用Server.CreatObject 取 得 对 象"AD
ODB.Connection" 的 一 个 实 例, 并 用"Open" 打 开 待 访 问 的 数 据 库:

  Set Conn=Server.CreatObject("ADODB.Connection")

  Conn.Open " 待 访 问 的 数 据 库 名 称"

  ---- 然 后 执 行SQL 命 令, 即 对 数 据 库 进 行 操 作, 这 里 要 使 用Exe
cute 命 令:

  ---- Set RS =Conn.Execute("Select ...From...Where...")

  ---- 下 一 步 就 可 以 对 数 据 库 进 行 查 询 操 作, 要 使 用RecordSets
对 象 的 如 下 命 令:

  ---- * RS.Fildes.Count RecordSets 的 字 段 数

  ---- * RS(i).Name 第i 个 字 段 名

  ---- * RS(i) 第i 个 字 段 的 记 录

  ---- * RS(" 字 段 名") 指 定 字 段 的 记 录

  ---- * RS.EOF 是 否 指 向 最 后 一 个 字 段 True or False

  ---- * RS.MoveFirst 指 向 第 一 条 记 录

  ---- * RS.MovePrev 指 向 前 一 条 记 录

  ---- * RS.MoveNext 指 向 后 一 条 记 录

  ---- * RS.MoveLast 指 向 最 后 一 条 记 录

  ---- * RS.GetRows 将 查 询 结 果 存 放 在 数 组 中, 然 后 再 从 数 组 中
读 取

  ---- * RS.Properties.Count 得 到ADO 的Connection 或ResultSet 的 属 性 总 数


  ---- * RS.Properties(Item).Name 得 到ADO 的Connection 或ResultSet 的 属 性
 名 称

  ---- * RS.Properties(Item) 得 到ADO 的Connection 或ResultSet 的 属 性 值

  ---- * 具 体 实 现

  ---- 查 询 主 页 面 为 港 澳 证 件 信 息 查 询, 对 应 程 序 为gacx.asp,
查 询 结 果 以 两 种 方 式 显 示, 一 种 是 显 示 主 要 信 息- 港 澳 证 件 信
 息 查 询 结 果 列 表, 对 应 程 序 为gacxlb.asp, 一 种 是 显 示 全 部 信 息
- 港 澳 证 件 信 息 查 询 结 果, 对 应 程 序 为gacxxq.asp, 如 果 查 询 条
件 不 能 满 足 时, 还 将 显 示 一 个 提 示 页 面, 告 诉 用 户 不 存 在 满
足 条 件 的 结 果, 这 由 程 序gacxts.asp 完 成。

  ---- 首 先 根 据 客 户 提 供 的 数 据 库 和 要 求 查 询 的 各 项 建 立 查
询、 查 询 结 果、 查 询 结 果 列 表 页 面, 还 要 给 出 一 个 简 单 的 提 示
 界 面, 告 诉 用 户 不 存 在 满 足 条 件 的 结 果, 请 重 新 查 询, 这 些
工 作 可 以 用FrontPage 98 完 成, 整 个 页 面 应 该 做 到 简 洁 大 方, 主
题 鲜 明。 程 序 代 码 在Microsoft Visual InterDev 下 编 写。

  ---- 下 面 处 理 编 码 数 据 库zd.dbf 中 的 内 容。 从 下 图 中 可 以 看 到
 有 很 多 带 下 拉 框 的 选 项 例 如" 性 别"、" 出 生 地" 等, 这 些 选 项 的
 内 容 都 是 从zd.dbf 数 据 库 中 提 取 出 来 的, 这 正 是 本 程 序 数 据 库
 处 理 过 程 中 的 一 个 闪 光 点( 这 一 部 分 是 由 陶 则 民 工 程 师 设 计
 并 实 现 的), 因 为 有 的 选 项 内 容 很 多, 例 如 出 境 口 岸 有101 项
之 多, 你 虽 然 也 可 以 用< select > < option >...< /option >< /select > 格
 式 在HTML 页 面 中 把 各 个 选 项 列 举 出 来, 但 那 将 给 程 序 的 维 护
带 来 很 大 麻 烦, 一 旦 编 码 数 据 库 的 内 容 有 变 动, 程 序 也 将 不
得 不 作 很 多 修 改, 而 且 带 下 拉 框 的 选 项 都 是 在zd.dbf 中 编 码 了
 的, 往 主 数 据 库 中 输 入 数 据 时 这 些 选 项 都 只 输 入 编 码, 但 显
 示 时 却 不 能 显 示 编 码, 必 须 把 编 码 对 应 的 汉 字 显 示 出 来。 这
 段 程 序 代 码 如 下( 以 性 别 为 例):

      < %

  Set Conn=Server.CreatObject("ADODB.Connection")

  Conn.Open "GACX"

  Set RS =Conn.Execute("Select BC,

  MC From zd Where BC Like "se%"")

          Response.Write "< SELECT SIZE=1 NAME="SEX" >"

          Do While Not RS.EOF

                  response.write  "< option

          value='"RS(0)"' >" &RS(1)

              Rs.MoveNext

      Loop

          Response.Write "< /SELECT >"

  RS.Colse

  Conn.Colse

  % >

  ---- 其 中,zd.dbf 包 含 两 个 字 段MC、BC,MC 表 示 待 编 码 项, 如 男、
 女,BC 表 示 编 码, 如 性 别 编 码 的 前 两 位 为"se", 男 用"se1" 表 示,
 女 用"se2" 表 示。

  ----     数 据 库 查 询 中 最 重 要 的 是 如 何 取 得 查 询 条 件。 本 例
 中 要 查 询 的 项 可 以 分 为 两 类: 一 类 是 输 入 的text 类 型 的 查 询
条 件, 另 一 类 是 从 下 拉 框 中 选 出 来 的 项, 在 处 理 时 就 要 区 分
对 待,text 类 型 的 查 询 条 件 很 好 处 理, 例 如 姓 名, 我 给 输 入 的
内 容 命 名 为"xm", 如 果 输 入 的 查 询 项 不 为 空 时 就 增 加 一 个 查 询
 条 件"NAME=Request.Form("xm")" 即 可; 下 拉 框 的 处 理 要 复 杂 得 多, 当
 下 拉 框 选 中 一 项 时, 例 如 性 别 选 中 男, 下 拉 框 中 输 入 的 是"se
1", ( 但 反 映 在 数 据 库 中 时 为"SEX=1", 因 为 数 据 库 中 输 入 字 典
 中 带 编 码 的 项 时 只 输 入 编 码), 就 是 要 查 询"SEX=se1" 的 项, 处
理 时 要 把"se1" 中 的"1" 提 取 出 来, 这 里 只 须 用 到 一 个 函 数mid 即
可, 查 询 条 件 为"SEX =mid("se1",3,1)", 即 从 数 据 库 中 查 找SEX=1 的
项, 并 把 所 有 满 足 条 件 的 项 不 重 复 地 列 举 出 来。

  ---- 查 询 结 果 的 显 示 就 很 容 易 了, 只 须 把 查 询 结 果 的 每 条 记
 录 按 列 表 的 方 式 显 示 出 来 即 可, 注 意 在 显 示 查 询 结 果 时 要 显
 示 编 码 对 应 的 汉 字, 就 是 到 字 典 中 去 找 编 码 为"se"&"1" 的 项 所
 对 应 的 编 码 值, 程 序 如 下:

  < table border="1" width="95%"

  bordercolor="#C0C0C0" cellspacing="0" cellpadding="0"

  bordercolorlight="#C0C0C0"

  bordercolordark="#C0C0C0" height="60" >

     < tr >

         < td width="9%" align="center"

             height="1" >< p align="center" >

                  姓   名< /td >

         < td width="12%" align="center"

                height="1" > 档 案 号< /td >

      < td width="6%" height="1" >

               < p align="center" > 性 别< /td >

      ......

     < /tr >

      < %i=1% >

      < %While Not RS.EOF % >

       < tr >

           < td width="9%" align="center"

                height="1" >< %=RS ("name")% >< /td >

           < td width="12%" align="center"

                height="1" >< %=RS ("dang")% >< /td >

           < td width="6%" height="1" >< %=Func

                ("se" & RS("sex"),GACX)% >< /td >

           ......

        < /tr >

        < %RS.MoveNext% >

        < %i=i+1% >

      < %WEnd% >

      < /table >

  ---- 其 中,Func ("se" & RS("sex"),GACX) 是 个 函 数, 实 现 从 数 据 源 中
 取 得 编 码 所 对 应 的 汉 字 的 功 能。

  ---- 参 考 文 献

  ---- 1 . 周 世 雄 著 《NT 动 态 站 点 设 计 指 南》 大 连 理 工 大 学 出
版 社

  ---- 2 . Windows NT Server 4.0 下 的ASP 联 机 文 档



  实用技巧分类

  Office编程

  CAD

  C、C++

  数据库应用

  Delphi

  Internet应用

  Java

  Notes应用

  操作系统应用

  PowerBuilder

  VB

  Visual Foxpro

  其他类

  上周 排行榜

  如 何 投 稿 ?

   在日常的工作、生活中,我们对计算机软硬件技术的应用、开发 肯定有许多的心得
体会,拿来和众人分享:让别人得到他们想要 的,使自己找到苦苦寻觅的;小的点点滴
滴,大的工程系统,这 里都需要。投稿的关键在"技巧"二 字,知他人所不知,这样的
稿件本栏最最欢迎! 大家公认的 好文章自然会有好的奖励。希望每个人 在这里都有所
收获...


.         很想采摘娇艳的玫瑰  很想改变眼前的生活  我不知是否                  .
   惜     还能将你把握  太多的猜疑  难免让人迷惑  不愿再盲目追求          缘
.         再重复错误  周末的夜我不哭  因为我深信  这个冬天将很快过去          .



[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店