第 五 课 : 使 用 Database Access
( 数 据 库 访 问 ) 组 件
ASP 的 Database Access 组 件 使 用 ActiveX Data Objects (ADO) 提 供 一 种 轻 而 易 举 的 方 法 , 可 以 访 问 存 储 在 数 据 库 或 其 他 表 格 式 数 据 结 构 ( 如 电 子 表 格 ) 中 的 信 息 , 只 要 它 们 遵 循 Open Database Connectivity (ODBC) 标 准 即 可 。 在 本 课 中 , 您 将 连 接 到 一 个 Microsoft? Access 客 户 数 据 库 , 并 且 显 示 目 录 列 表 。 您 将 学 习 如 何 使 用 SQL SELECT 语 句 来 检 索 数 据 , 并 且 创 建 一 个 HTML 表 格 来 显 示 结 果 。
----------
识 别 数 据 库
在 通 过 Database Access 组 件 使 用 一 个 数 据 库 之 前 , 必 须 在 ?控 制 面 板 ?的 OD BC 程 序 中 识 别 这 个 数 据 库 。 在 本 例 中 , 您 将 使 用 本 教 程 提 供 的 一 个 Microsoft? Access 数 据 库 。
在 运 行 Web 服 务 器 (localhost) 的 计 算 机 上 , 打 开 ?控 制 面 板 ?。
双 击 ?ODBC ?图 标 , 然 后 单 击 ?系 统 DSN ?选 项 卡 。 DSN 将 告 诉 数 据 库 驱 动 程 序 ( 用 来 配 置 数 据 库 并 与 其 通 讯 的 程 序 ) 数 据 库 文 件 所 在 的 位 置 。 您 可 以 创 建 3 种 类 型 的 DSN: 用 户 DSN (User DSN) , 只 能 对 您 起 作 用 ; 系 统 DSN (System DSN) , 可 以 对 计 算 机 的 所 有 用 户 起 作 用 ; 文 件 DSN (F ile DSN) , 将 DSN 信 息 保 存 为 文 件 , 并 且 允 许 所 有 用 户 使 用 相 同 的 数 据 库 驱 动 程 序 。 本 教 程 使 用 的 DSN 必 须 是 系 统 DSN (System DSN) 。 单 击 ?添 加 ?, 选 择 ?Microsoft Access 驱 动 程 序 ?, 然 后 单 击 ?完 成 ?。
在 ?数 据 源 名 称 ?框 中 , 键 入 ASPTutorial , 然 后 单 击 ?选 择 ?。 选 择 BTCustm r.mdb 文 件 ( 默 认 情 况 下 位 于 WINNT\Help\IIS\Htm\Tutorial 目 录 中 ) , 然 后 单 击 ?确 定 ?。
单 击 ?确 定 ?关 闭 对 话 框 。
创 建 组 件 实 例
用 文 本 编 辑 器 打 开 localhost Web 服 务 器 上 Tutorial 目 录 ( C:\WINNT\Help\ iis\htm\tutorial) 中 的 Database.asp 文 件 。
查 找 文 字 ?Define Scripting Language ?, 将 下 列 脚 本 插 入 找 到 的 文 字 行 之 后 :
〈 %@ LANGUAGE = "VBScript" % 〉
必 须 保 证 这 个 标 记 是 所 有 .asp 文 件 的 第 一 个 脚 本 行 。
查 找 文 字 ?Tutorial Lesson - ADO Connection ?, 脚 本 将 插 入 到 找 到 的 文 字 行 之 后 。
必 须 先 创 建 一 个 对 象 的 实 例 , 然 后 才 能 使 用 它 。 请 复 制 并 粘 贴 以 下 脚 本 命 令 :
〈 %
Set objConnection = Server.CreateObject("ADODB.Connection")
如 果 在 此 以 前 , 另 一 个 用 户 已 经 学 完 了 教 程 的 这 一 部 分 , 那 么 这 些 脚 本 命 令 就 已 经 在 ?Tutorial Lesson ?注 释 行 以 下 了 。 请 用 复 制 的 脚 本 覆 盖 已 有 的 脚 本 , 或 者 将 未 使 用 过 的 Database.asp 从 Template 子 目 录 (C:\WINNT\Help\iis\htm\tu torial/template) 复 制 到 Tutorial 目 录 中 。
对 于 Database Access 组 件 来 说 , 您 必 须 指 定 ODBC 数 据 源 ( 要 从 其 中 检 索 数 据 的 数 据 库 ) , 方 法 是 打 开 一 个 到 数 据 库 的 连 接 。 复 制 并 粘 贴 以 下 脚 本 命 令 :
objConnection.Open "ASPTutorial"
使 用 Database Access 组 件 的 Execute 方 法 , 可 以 向 数 据 库 发 送 一 个 将 结 构 化 查 询 语 言 (Structured Query Language, SQL) 的 SELECT 命 令 , 并 且 将 返 回 的 记 录 保 存 到 结 果 集 合 (rsCustomersList) 中 。 请 将 下 列 脚 本 命 令 复 制 并 粘 贴 到 objConnection.Open 语 句 之 后 :
SQLQuery = "SELECT * FROM Customers"
Set rsCustomersList = objConnection.Execute(SQLQuery)
% 〉
如 果 将 SQL 查 询 字 符 串 直 接 传 递 给 Execute 方 法 , 而 不 是 先 给 变 量 SQLQuery 赋 值 , 就 可 以 将 这 两 行 合 并 。 当 SQL SELECT 行 比 较 长 时 , 为 使 脚 本 易 读 一 些 , 可 以 将 字 符 串 赋 值 给 一 个 变 量 ( 如 SQLQuery ) , 然 后 将 变 量 名 传 递 给 Execute 方 法 。
显 示 返 回 的 结 果 集 合
您 可 以 将 结 果 集 合 视 为 一 个 表 格 , 这 个 表 格 的 结 构 由 SQL SELECT 语 句 中 的 字 段 决 定 。 显 示 检 索 返 回 的 行 , 就 象 在 结 果 集 合 中 按 行 数 执 行 循 环 一 样 简 单 。 在 本 示 例 中 , 返 回 的 数 据 显 示 在 HTML 表 格 行 中 。
在 Database.asp 文 件 中 , 查 找 文 字 ?Tutorial Lesson - Display ADO Data ?, 将 以 下 脚 本 复 制 并 粘 贴 到 找 到 的 行 之 后 :
〈 % Do Until rsCustomersList.EOF% 〉
〈 tr 〉
〈 td bgcolor="f7efde" align=center 〉
〈 %= rsCustomersList("ContactFirstName")% 〉
〈 %= rsCustomersList("ContactLastName") % 〉
〈 /td 〉
〈 td bgcolor="f7efde" align=center 〉
〈 a href="mailto: 〈 %= rsCustomersList("ContactLastName")% 〉 " 〉
〈 %= rsCustomersList("ContactLastName")% 〉 〈 /a 〉
〈 /td 〉
〈 td bgcolor="f7efde" align=center 〉
〈 %= rsCustomersList("City")% 〉
〈 /td 〉
〈 td bgcolor="f7efde" align=center 〉
〈 %= rsCustomersList("StateOrProvince")% 〉
〈 /td 〉
〈 /tr 〉
如 果 在 此 以 前 , 另 一 个 用 户 已 经 学 完 了 教 程 的 这 一 部 分 , 那 么 这 些 脚 本 命 令 就 已 经 存 在 了 。 用 复 制 的 脚 本 覆 盖 已 有 的 脚 本 , 或 者 将 未 使 用 过 的 Bayshore.asp 从 Template 目 录 复 制 到 Tutorial 目 录 中 。
当 条 件 为 ?真 ?时 , VBScriptDo...Loop 语 句 重 复 执 行 一 段 语 句 。 被 重 复 执 行 的 语 句 可 以 是 脚 本 命 令 或 HTML 文 本 和 标 记 。 因 此 , 在 循 环 的 每 次 重 复 中 , 您 都 可 以 用 HTML 画 出 表 格 行 , 并 且 用 脚 本 命 令 插 入 返 回 的 数 据 。
要 完 成 循 环 , 还 要 使 用 MoveNext 方 法 来 移 动 行 指 针 到 下 一 行 。 因 为 这 一 语 句 仍 然 在 Do...Loop 语 句 中 , 所 以 它 一 直 重 复 , 直 到 到 达 文 件 结 尾 才 停 止 。 请 复 制 以 下 脚 本 , 并 将 其 粘 贴 到 ?Tutorial Lesson - Retrieve Next Row ?行 之 后 :
〈 %
rsCustomersList.MoveNext
Loop
% 〉
以 纯 文 本 格 式 保 存 Database.asp 文 件 , 并 且 退 出 文 本 编 辑 器 。 注 意 文 件 后 缀 . asp 不 要 被 文 本 编 辑 器 替 换 。
若 要 验 证 您 创 建 的 ASP 页 是 否 正 常 运 行 , 请 将 您 的 浏 览 器 导 向 http://localho st/IISHelp/IIS/Help/Htm/Tutorial/Database.asp 。 ( 此 后 若 要 返 回 本 教 程 , 只 要 在 浏 览 器 中 单 击 ?上 一 页 ?或 ?Back ?按 钮 即 可 。 ) 自 学 参 考
如 果 您 正 使 用 Windows NT , 要 参 阅 更 完 整 的 Database Access 组 件 示 例 , 可 以 访 问 Exploration Air 示 范 节 点 。 单 击 Behind the Scenes 图 像 , 可 以 学 习 用 来 创 建 这 个 Web 节 点 的 脚 本 的 更 多 知 识 。 在 Bayshore Travel Web 页 上 也 有 指 向 Exploration Air 示 范 节 点 的 链 接 。
注 意 如 果 您 还 没 有 访 问 Exploration Air 示 范 节 点 , 上 面 的 链 接 将 把 您 带 到 E xploration Air 主 页 。 此 后 若 要 返 回 本 教 程 , 只 要 在 浏 览 器 中 单 击 ?上 一 页 ?或 ?Back ?按 钮 即 可 。
现 在 , 您 已 经 用 过 了 ActiveX 组 件 , 让 我 们 来 学 习 模 块 3 : 编 写 自 己 的 组 件 。
----------
模 块 3 : 编 写 自 己 的 组 件
请 选 择 本 课 的 脚 本 语 言 。
在 模 块 2 中 , 您 已 经 熟 悉 了 ASP 提 供 的 组 件 , 现 在 该 创 建 自 己 的 组 件 来 满 足 自
己 的 特 殊 需 要 了 。
假 设 您 需 要 创 建 一 个 ASP 程 序 , 以 便 通 过 Web 节 点 提 供 特 定 的 财 务 功 能 。 ASP
没 有 直 接 提 供 这 样 的 功 能 , 不 过 您 可 以 通 过 创 建 自 己 的 Java 或 ActiveX 组 件 来
解 决 问 题 。 您 将 在 本 模 块 中 学 会 这 些 。
如 果 要 学 习 如 何 创 建 并 使 用 组 件 , 首 先 使 用 下 面 的 表 格 进 行 选 择 :
----------
选 择 本 课 要 创 建 的 组 件 类 型 :
Visual Basic 5.0 ActiveX 组 件
Visual J++ 1.1 Java? 组 件
----------
要 点
若 要 保 存 并 查 看 您 在 本 模 块 中 的 工 作 结 果 , 需 要 :
对 localhost Web 服 务 器 上 的 /iishelp/iis/htm/tutorial 虚 拟 目 录 具 有 ?写 (Write) ?和 ?改 编 Web 服 务 器 (Script Web server) ?权 限 。 详 细 信 息 , 请 参 阅 设 置 Web 服 务 器 权 限 。
您 的 Windows NT 帐 号 , 必 须 在 DriveLetter:\Winnt\System32\Inetsrv\ 目 录 及 其 子 目 录 上 具 有 Windows NT File System (NTFS) 的 读 、 写 和 运 行 程 序 权 限 ( 此 处 的 DriveLetter 代 表 localhost Web 服 务 器 的 适 当 的 驱 动 器 号 , 如 果 您 没 有 安 装 到 默 认 目 录 下 , 请 用 您 的 安 装 目 录 代 替 \Winnt\System32 ) 。
要 完 成 本 模 块 , 必 须 在 localhost Web 服 务 器 上 安 装 :
Microsoft? Visual Basic 5.0 专 业 版 的 32 位 版 本 或 Visual Basic 5.0 企 业 版 开 发 系 统 。
如 果 已 经 禁 止 了 Web 浏 览 器 运 行 Java 程 序 功 能 , 请 在 开 始 教 程 以 前 启 用 该 功 能。