返 回 总 目 录
目 录
4 .2 A D O 和 O LE - D B — — 同一问题 不同层次的解 决方案 2 4
4 .3 什么时候 应该使用 O LE - D B ADO 或 O D B C 2 9
- [.4 V
is u a l C + + O D B C O LE - D B 及 ADO 类概述 3 2](#vi-su-al-c-od-bc-ol-e--db-及-ad-o-类-概-述)
第 6 章 使 用 OD B C 建 立 数 据 库 应 用 程 序 8 2
- [.1 创建简单 的窗体视图应 用程序 8
5](#创-建-简-单-的-窗-体-视-图-应-用-程-序)
第 7 章 使 用 O L E - D B 或 AD O 建 立 数 据 库 应 用 程 序 1 4 6
- [.1 创建简单 的网格视图应 用程序 1 4
9](#创-建-简-单-的-网-格-视-图-应-用-程-序)
第 4 章 A D O 与 O D B C
有 很 多 种 使 用 数 据 库 的 方 法 对 大 多 数 数 据 库 来 说 选 择 C+ + 这 种 产 品 也许 并 不 适 宜 我 们 知 道 像 dB A S E IV F oxP ro O racle 和 A cce s s 这 样 的 产 品是 完 全 以 数 据 库 管 理 为 中 心 的 事 实 上 这 些 产 品 非 常 善 于 创 建 数 据 库 管 理 器 以 至 于 它 们 确 实 并 不 善 于 做 太 多 其 它 的 工 作 即 使 要 用 更 通 用 化 而 非 更 专 用 化的 数 据 库 产 品 来 执 行 一 些 类 型 的 工 作 在 使 程 序 设 计 更 容 易 这 一 方 面 像 V is u a l B a s ic 和 D e lphi 这 样 的 RA D 环 境 也 要 比 V is u a l C + + 强 很 多
你 是 不 是 对 我 的 说 法 感 到 很 奇 怪 下 面 我 就 要 谈 一 谈 在 谈 到 使 用 数 据 库管 理 系 统 (D B M S ) 这 个 话 题 时 用 V is u a l C + + 实 际 上 可 以 做 些 什 么 虽 然 上 述 其它 语 言 使 得 编 写 成 熟 的 包 括 用 户 界 面 和 高 速 搜 索 能 力 的 DB M S 就 像 孩 子 做 游 戏一 样 容 易 但 是 它 们 缺 少 V is u a l C + + 可 以 提 供 的 某 些 重 要 东 西 你 不 能 为 使用 A cce s s 的 数 据 库 轻 松 地 编 写 出 实 用 程 序 正 像 实 用 程 序 的 定 义 所 说 的 实 用程 序 应 该 很 小 并 且 具 备 可 移 植 性 A cce s s 应 用 程 序 却 不 是 这 样 即 使 用 A cce s s 这 样 的 产 品 创 建 的 程 序 可 以 很 小 并 且 可 以 移 植 你 仍 有 其 它 方 面 的 需 求 底 层的 功 能
注 编 写 数 据 库 实 用 程 序 及 驱 动 程 序 时 可 以 选 择 Visual C++ 语 言
想 像 一 下 使 用 像 V isu a l B a sic 这 样 的 语 言 来 与 实 时 数 据 采 集 设 备 打 交 道 的情 况 在 进 行 底 层 访 问 时 RA D 的 保 护 环 境 常 常 使 程 序 员 不 能 进 行 有 效 的 处 理当 然 数 据 采 集 设 备 几 乎 不 依 赖 于 简 明 的 连 接 你 打 算 如 何 把 V is u a l B a s ic 和 外
部 的 数 据 源 连 接 起 来 呢 数 据 源 甚 至 可 能 不 了 解 W ind ow s DOS 或 类 似 的 成 熟的 操 作 系 统
只 要 使 用 得 当 很 容 易 看 到 V is u a l C + + 是 一 种 不 可 或 缺 的 数 据 库 管 理 工 具针 对 大 规 模 的 应 用 程 序 即 使 你 仍 想 依 赖 于 V isu a l B a sic 这 样 的 RA D 语 言 也请 考 虑 一 下 V is u a l C +
- 它 创 建 的 程 序 规 模 小 提 供 底 层 访 问 并 能 提 供 实 时 访问 事 实 上 你 可 能 还 没 有 想 到 V is u a l C + + 数 据 库 应 用 程 序 的 市 场 是 很 有 潜力 的 随 着 人 们 在 旅 途 中 越 来 越 多 地 使 用 膝 上 型 和 掌 上 型 电 脑 这 两 类 电 脑 上的 数 据 库 应 用 程 序 也 变 得 越 来 越 普 通 你 也 许 能 够 适 应 今 天 的 膝 上 型 电 脑 上 的A cce s s 应 用 程 序 但 谈 到 硬 盘 大 小 或 内 存 需 求 时 公 司 里 较 老 的 膝 上 型 电 脑 可能 就 达 不 到 要 求 运 行 W ind ow s C E 的 掌 上 型 电 脑 在 运 行 这 个 A cce s s 应 用 程 序时 肯 定 会 发 生 故 障 在 这 一 数 据 库 市 场 的 新 领 域 V is u a l C + + 提 供 了 无 价 无限 的 工 具
Web 链 接 谈 到 使 用 Visual C++ 和 数 据 库 其 实 你 并 不 孤 单 从 一 开 始 就有 数 据 库 专 用 新 闻 组 提 供 有 关 数 据 库 创 建 技 巧 的 帮 助 比 如microsoft. public.access 不 过 这 些 新 闻 组 提 供 的 是 通 用 信 息对 实 际 编 写 应 用 程 序 并 非 全 都 那 么 有 用 专 门 针 对 Visual C++ 问 题的 新 闻 组 是 microsoft. public.vc.database 和microsoft. public.v c.m fcdatabase 如 果 你 决 定 用 ODBC 访 问 数 据库 可 能 还 要 查 看 一 下 microsoft. public.odbc.sdk 新 闻 组 它 讨 论的 不 仅 仅 是 S D K 对 最 新 技 术 感 兴 趣 的 程 序 员 可 以 查 阅microsoft. public.ado 新 闻 组 或 者 microsoft.pu blic.oledb 对
象 链 接 和 嵌 入 数 据 库 新 闻 组 前 者 讨 论 A D O 后 者 讨 论 A D O 的 基 础技 术 在 microsoft. public.ado.rds 有 一 个 ADO 子 组 它 讨 论 远 程数 据 访 问
既 然 所 有 的 疑 惑 都 消 除 了 大 多 数 人 的 信 心 也 就 增 强 了 下 面 我 们 就 介 绍两 种 使 C+ + 访 问 数 据 库 中 的 数 据 的 主 要 方 法 ODB C 开 放 数 据 库 互 连 和 ADO
A c tiv e X 数 据 对 象 在 本 章 中 将 介 绍 这 两 种 类 型 的 访 问 方 法 但 我 想 你会 发 现 ADO 方 法 是 针 对 新 的 程 序 设 计 情 形 而 采 用 的 它 克 服 了 早 期 技 术 的 诸多 限 制 依 赖 于 M ic ros oft 新 的 底 层 访 问 方 法 O LE - D B 对 象 链 接 和 嵌 入 数 据 库 在 本 书 的 后 面 我 们 会 看 到 用 ADO 和 V is u a l C + + 提 供 的 各 种 向 导 来 汇 集 数 据 库工 程 其 速 度 有 多 快
注 ODBC 通 常 用 来 访 问 不 具 备 OLE-DB 特 性 的 非 Microsoft 数 据 库 中 的 数据 16 位 的 ODBC 驱 动 程 序 工 作 起 来 可 能 非 常 缓 慢
ODB C 素 以 最 慢 的 数 据 访 问 方 法 而 著 称 但 是 很 可 惜 当 ADO 或 DAO 都不 支 持 某 个 数 据 库 管 理 器 而 ODB C 支 持 这 个 数 据 库 管 理 器 时 在 这 种 特 定 的 情形 下 你 仍 然 需 要 使 用 ODB C 在 大 多 数 情 况 下 这 意 味 着 要 从 数 据 库 厂 商 那里 获 得 所 需 的 驱 动 程 序 虽 然 V is u a l C + + 确 实 附 带 了 一 些 产 品 的 驱 动 程 序 如果 你 正 在 使 用 数 据 库 管 理 器 的 某 些 神 秘 功 能 那 么 就 需 要 建 立 自 己 的 接 口 — — 这 并 不 是 一 件 十 分 困 难 的 事 本 质 上 讲 你 总 是 要 使 用 ODB C 来 访 问 M ic ros oft 产 品 之 外 的 其 它 DB M S 产 品 所 创 建 的 数 据 库 这 些 数 据 库 并 不 具 备 O LE - D B 功能 ODB C 还 要 求 做 一 些 额 外 的 工 作 — — 为 AD O 调 整 V is u a l C + + 中 的 大 部 分 向导
高 级 技 巧
除 了 使 用 A D O 和 ODBC 外 你 还 可 以 使 用 像 D A O 数 据 访 问 对 象 这 样的 早 期 技 术 该 技 术 包 含 在 像 Access 这 样 的 Microsoft 产 品 中 DAO 依 赖 于 用 Microsoft Access 自 动 获 得 的 Microsoft Jet 数 据 库 引 擎
D A O 还 是 较 早 版 的 Visual Basic 所 使 用 的 引 擎 最 新 版 的 Visual Basic 和 Visual C++ 依 赖 于 相 同 的 ADO/OLE-DB 组 合 所 以 如 果 需 要 支 持 较早 的 Visual Bas ic 应 用 程 序 那 么 D A O 仍 是 一 个 不 错 的 选 择
尽 管 Microsoft 文 件 声 明 可 以 用 DAO 访 问 非 Microsoft 产 品 建 立 的数 据 库 但 你 仍 会 发 现 在 这 种 情 况 下 使 用 ADO 和 ODBC 要 好 得 多这 样 的 话 不 但 兼 容 性 问 题 会 少 一 些 速 度 也 将 有 所 提 高 因 为 数 据请 求 经 过 的 接 口 层 减 少 了 有 一 条 经 验 要 记 住 D A O 是 设 计 用 来 处 理 M D B 文 件 的
D A O 的 一 个 问 题 是 它 不 支 持 远 程 通 信 这 是 Microsoft 提 出 RDO 远程 数 据 对 象 的 原 因 之 一 这 种 特 别 技 术 在 Visual Bas ic 应 用 程 序 中的 使 用 要 比 在 Visual C++ 中 的 使 用 多 得 多 所 以 我 猜 想 你 们 中 有很 多 人 都 在 使 用 它 但 是 记 住 R D O 仍 是 一 种 生 命 力 很 强 的 技 术 这一 点 很 重 要 A D O 确 实 具 有 替 代 R D O 的 远 程 数 据 服 务 (RDS)特 征 换 言之 A D O 在 一 个 软 件 包 中 提 供 了 D A O 和 R D O 两 种 功 能 性
- 1 什 么 是 OD BC
开 放 数 据 库 互 连 O D BC ) 是 M ic ros oft 引 进 的 一 种 早 期 数 据 库 接 口 技 术 它实 际 上 是 我 们 要 在 本 章 后 面 加 以 讨 论 的 ADO 的 前 身 M ic ros oft 引 进 这 种 技 术的 一 个 主 要 原 因 是 以 非 语 言 专 用 的 方 式 提 供 给 程 序 员 一 种 访 问 数 据 库 内 容的 简 单 方 法 换 句 话 说 访 问 DB F 文 件 或 A c c e ss B a sic 以 得 到 M D B 文 件 中 的数 据 时 无 需 懂 得 X b a s e 程 序 设 计 语 言 事 实 上 V is u a l C + + 就 是 这 样 一 个 程序 设 计 平 台 即 M ic ros oft 最 初 是 以 ODB C 为 目 标 的
你 会 发 现 ODB C 工 作 起 来 和 W ind ow s 一 样 — — 它 用 包 含 在 DL L 内 的 驱 动程 序 完 成 任 务 其 实 ODB C 提 供 一 套 两 个 驱 动 程 序 一 个 是 数 据 库 管 理 器 的语 言 另 一 个 为 程 序 设 计 语 言 提 供 公 用 接 口 允 许 V is u a l C + + 用 标 准 的 函 数 调用 经 公 用 接 口 访 问 数 据 库 的 内 容 是 这 两 个 驱 动 程 序 的 汇 合 点 当 然 还 有 其它 和 ODB C 有 关 的 实 用 程 序 类 型 的 DL L 例 如 一 个 这 样 的 DL L 允 许 你 管 理ODB C 数 据 源 ODB C 的 实 际 管 理 接 口 出 现 在 SY ST E M 文 件 夹 中 的 某 个 CP L 控制 面 板 文 件 中 — — 我 们 在 后 面 要 谈 到 这 方 面 的 问 题
OD B C 的 确 能 履 行 承 诺 提 供 对 数 据 库 内 容 的 访 问 并 且 没 有 太 多 的 问 题它 没 有 提 供 数 据 库 管 理 器 和 C 之 间 尽 可 能 最 好 的 数 据 转 换 这 种 情 况 是 有 的 但 它 多 半 能 像 广 告 所 说 的 那 样 去 工 作 唯 一 影 响 ODB C 前 程 的 是 它 的 速 度 极低 — — 至 少 较 早 版 本 的 产 品 是 这 样 ODB C 最 初 面 世 时 一 些 开 发 者 曾 说 因
为 速 度 问 题 ODB C 永 远 也 不 会 在 数 据 库 领 域 产 生 太 大 的 影 响 然 而 以 M ic ros oft
的 市 场 影 响 力 ODB C 毫 无 疑 问 是 成 功 了 今 天 只 要 有 两 种 ODB C 驱 动 程 序
的 一 种 那 么 几 乎 每 一 个 数 据 库 管 理 器 的 表 现 都 会 很 卓 越
使 用 ODBC
在 可 以 用 ODB C 做 任 何 事 之 前 必 须 有 一 个 数 据 库 — — 至 少 在 脑 子 里 在一 个 像 A cce s s 这 样 的 应 用 程 序 中 创 建 数 据 库 框 架 通 常 会 更 容 易 一 些 因 为 A cce s s 可 以 非 常 轻 松 地 提 供 完 成 任 务 所 需 的 各 种 功 能 但 是 如 果 你 至 少 安 装 了 所 需的 ODB C 驱 动 程 序 那 就 可 以 在 C+ + 中 创 建 程 序 框 架 一 设 计 了 数 据 库 就 要为 其 创 建 ODB C 数 据 源 我 们 会 在 本 节 中 看 到 这 一 点 下 面 的 过 程 并 没 有 严 格地 说 明 活 动 的 经 过 只 是 说 明 了 一 种 配 置 数 据 源 的 技 术
注 释 我 会 在 第 5 章 中 说 明 如 何 创 建 一 个 Access 数 据 库 现 在 我 们 只 是看 一 看 为 了 访 问 那 个 数 据 库 我 们 下 一 步 要 做 些 什 么
- 双
击 C on tro l P a ne l 控 制 面 板 中 的 32 位 ODB C 小 程 序 如 果 当 前 系 统上 未 安 装 16 位 驱 动 程 序 那 么 一 些 版 本 的 W ind ow s 使 用 简 单 的 ODB C 小 程 序 你 会 看 到 ODB C D a ta S o u rc e A d m in is tra to r ODB C 数 据 源 管理 员 对 话 框 如 下 图 所 示 请 注 意 该 对 话 框 中 当 前 显 示 的 选 项 卡 是U s e r D S N 用 户 数 据 源 名 选 项 卡 对 系 统 级 数 据 库 来 说 使 用 Sy s te m D S N 系 统 数 据 源 名 选 项 卡 对 文 件 级 数 据 源 从 严 格 意 义 上 说 它 不 是数 据 库 使 用 F ile D S N 文 件 数 据 源 名 选 项 卡 你 还 会 看 到 一 个 数据 库 的 缺 省 选 项 如 果 想 从 V is u a l C + + 内 部 创 建 数 据 库 就 会 用 到 这 个选 项
警 告 对 本 地 数 据 库 来 说 通 常 要 在 User DSN 用 户 DSN 选 项 卡 上 创 建一 个 项 对 远 程 数 据 库 则 在 System DSN 系 统 DSN 选 项 卡 上 创 建 任 何 情 况 下 都 不 能 在 User DSN 用 户 DSN 和 System DSN 系 统 DSN 选 项 卡 上 创 建 同 名 的 项 通 常 会 出 现 的 问 题 是 你 试 图 访 问 远 程 数 据库 但 从 W e b 服 务 器 获 得 了 非 常 奇 怪 和 矛 盾 的 错 误 消 息 事 实 上 如果 在 远 程 数 据 库 访 问 期 间 得 到 了 奇 怪 的 错 误 消 息 那 么 32 位 ODBC 小程 序 是 首 先 应 该 查 看 的 地 方 之 一
- 单
击 A d d 按 钮 会 看 到 C reate N e w D a ta S o u rce 创 建 新 的 数 据 源 对 话框 如 下 图 所 示
技 巧 检 查 O D B C D at a So ur ce A dm in is tr at or O D B C 数 据 源 管 理 员 对 话框 的 A b o u t 选 项 卡 可 以 确 定 你 正 在 使 用 的 O D B C 驱 动 程 序 的 最 新 版 本这 个 选 项 卡 包 含 了 各 种 O D B C D L L 的 版 本 号 生 产 厂 商 的 名 称 以 及 出 现在 S Y S T E M 文 件 夹 中 的 文 件 名 大 多 数 情 况 下 通 过 查 看 版 本 号 可 以 验证 O D B C 驱 动 程 序 是 否 是 最 新 的 版 本
- 选择一个数
据源 对本练习来说 我选择了 A ccess 数据源 单击 F in ish 完
成 |
会看 到某种类型的配置对话 框 |
如下面的 O D B C |
M icro so ft |
A ccess |
9 7 |
---|---|---|---|---|---|
Setu p |
设置 对 话框所示 |
注 释 如 果 你 选 择 的 数 据 源 和 我 在 本 实 例 中 选 择 的 不 同 那 么 所 需 的 配 置步 骤 也 和 这 里 说 明 的 不 同 — — 每 个 ODBC 驱 动 程 序 都 要 求 不 同 类 型 的配 置
- 在
D a ta S o u rce N a m e 数 据 源 名 域 内 输 入 数 据 源 名 称 一 定 要 选 择 意
义 明 确 但 又 不 过 于 冗 长 的 名 称 我 选 择 F ood D a ta ba s e 食 品 数 据 库 因 为 我最 终 要 创 建 一 个 与 食 品 库 存 有 关 的 数 据 库 的 链 接
-
在
D e s c r ip t io n 描 述 域 内 输 入 一 段 说 明 性 文 字 可 以 让 这 个 项 比 上 一个 项 稍 长 一 些 因 为 它 描 述 数 据 库 的 用 途 另 一 方 面 也 不 要 写 入 像 战 争 与和 平 那 样 大 的 小 说 对 本 练 习 我 输 入 了 T h is da ta b a s e c on ta ins inve n tor y in fo rm a t ion fo r a food s tore 本 数 据 库 包 含 食 品 存 储 的 库 存 信 息
-
单
击 Se le c t 选 择 按 钮 你 会 看 到 一 个 F ile O p e n - ty p e 文 件 打 开 类 型 对 话 框 可 以 在 那 里 选 择 一 个 现 有 的 数 据 库 ODB C 驱 动 程 序 会 自 动 选 择 正 确的 文 件 扩 展 名
技 巧 并 不 是 一 定 要 提 前 设 计 数 据 库 请 注 意 Access ODBC 驱 动 程 序 还包 括 一 个 创 建 新 数 据 库 的 按 钮 很 多 ODBC 驱 动 程 序 都 提 供 了 这 种 功能 但 并 不 是 全 都 这 样 单 击 这 个 按 钮 会 启 动 数 据 库 管 理 器 应 用 程 序并 允 许 你 设 计 数 据 库 注 意 有 一 点 很 有 意 思 Access ODBC 驱 动 程 序还 会 允 许 你 使 用 这 个 对 话 框 压 缩 或 修 补 数 据 库
-
选
择 系 统 数 据 库 选 项 在 大 多 数 情 况 下 要 选 择 N one 无 除 非 你 为 应用 程 序 特 别 创 建 了 一 个 系 统 数 据 库 如 果 确 实 添 加 了 系 统 数 据 库 它 会 出 现 在O D B C M ic ros oft A c c e s s 97 S e tu p 设 置 对 话 框 的 Sy s te m D S N 系 统 DS N 选项 卡 上
-
单
击 A dva nc e d 高 级 按 钮 会 看 到 S e t A dva nc e d O p t ions 设 置 高 级 选项 对 话 框 如 下 图 所 示 无 需 对 很 多 项 做 修 改 但 是 要 把 客 户 名 添 加 到 L og in N a m e 注 册 名 域 中 把 客 户 口 令 添 加 到 P a ssw o rd 口 令 域 中 这 允 许 客 户
在 访 问 你 的 数 据 库 时 根 本 不 用 了 解 访 问 的 细 节 甚 至 不 用 了 解 被 记 录 的 客户 名
技 巧 为 最 优 化 潜 在 的 区 域 可 以 浏 览 一 下 ODBC 驱 动 程 序 提 供 的 一 系 列 高级 选 项 例 如 Access ODBC 允 许 你 更 改 DBMS 所 用 的 线 程 数 量 缺省 设 置 3 通 常 提 供 了 不 错 的 性 能 但 是 你 会 发 现 复 杂 程 序 中 线 程 多一 些 的 话 可 以 提 高 前 台 任 务 的 速 度 由 于 Windows 使 用 了 一 些 处 理器 循 环 对 线 程 实 施 管 理 所 以 使 用 了 过 多 的 线 程 又 会 降 低 应 用 程 序 的速 度
-
设 置
完 所 需 的 高 级 选 项 后 单 击 OK
-
再
次 单 击 OK 关 闭 O D B C M ic ros oft A c c e s s 97 S e tu p 设 置 对 话 框 应该 看 到 新 的 设 置 项 已 经 添 加 到 ODB C D a ta S o u rc e A d m in is tra to r ODB C 数 据源 管 理 员 对 话 框 中 如 果 今 后 要 为 数 据 库 更 改 这 些 设 置 只 要 简 单 地 加 亮 它并 单 击 C onfigure 配 置 删 除 数 据 库 配 置 也 很 容 易 只 要 加 亮 DS N 并 单 击R e m o v e 删 除 即 可
创 建 系 统 DS N 和 制 作 用 户 DS N 差 不 多 两 者 间 一 个 显 著 的 差 别 是 使 用
它 们 的 目 的 不 同 系 统 DS N 告 诉 应 用 程 序 如 何 与 数 据 库 相 连 在 一 些 情 况 下 如何 与 之 交 互 作 用 系 统 DS N 不 包 含 数 据 库 所 需 的 任 何 数 据 它 包 含 连 接 标准 其 中 可 以 包 括 从 用 户 列 表 到 重 要 文 件 位 置 的 一 切 信 息
文 件 DSN
你 可 能 已 经 注 意 到 了 上 一 节 中 的 实 例 有 问 题 如 果 想 单 独 配 置 网 络 上 的每 一 台 机 器 它 会 工 作 得 很 好 但 这 可 能 不 是 一 个 好 主 意 还 有 一 种 存 储 创 建数 据 源 所 需 信 息 的 方 式 文 件 DS N 这 正 是 我 们 要 在 本 节 中 讨 论 的 下 面 的 过程 说 明 了 设 置 文 件 DS N 的 一 般 方 法
1 . 双 击 C on tro l P a ne l 控 制 面 板 中 的 32 位 ODB C 小 程 序 会 看 到 ODB C D a ta S o u rc e A d m in is tra to r ODB C 数 据 源 管 理 员 对 话 框 选 择 F ile D S N 文件 DS N 选 项 卡 会 看 到 如 下 图 所 示 的 对 话 框 要 做 的 第 一 件 事 是 选 择 存 储DS N 信 息 的 地 方
- 单
击 L ook In 观 察 下 拉 列 表 框 会 看 到 一 系 列 当 前 机 器 的 目 录 和 驱 动器 可 以 为 DS N 使 用 任 何 存 储 位 置 我 通 常 在 网 络 上 选 择 数 据 库 存 储 目 录 使用 UNC 通 用 命 名 标 准 意 味 着 每 个 人 都 会 用 相 同 的 路 径 来 访 问 DS N 文 件
技 巧 Up One L evel 上 一 级 按 钮 在 Look In 下 拉 列 表 框 旁 边 的 工作 方 式 和 在 Explorer 中 是 一 样 的 可 以 用 该 按 钮 返 回 到 上 一 级 目 录最 后 你 会 在 My Computer 我 的 电 脑 处 结 束 看 到 机 器 上 所 有 驱动 器 的 清 单
- 单
击 A d d 添 加 会 看 到 C reate N e w D a ta S o u rce 创 建 新 的 数 据 源 对 话 框
4 . 在 列 表 中 选 择 一 个 ODB C 驱 动 程 序 然 后 单 击 N e x t 下 一 个 对 本示 例 来 说 我 再 次 选 择 A cce s s 你 会 看 到 C reate N e w D a ta S o u rce 创 建 新 的 数据 源 对 话 框 的 下 一 页 显 示 出 来 在 这 里 选 择 数 据 源 的 名 称 和 存 储 位 置 单 击B ro w s e 浏 览 会 看 到 F ile O p e n - ty p e 文 件 打 开 类 型 对 话 框 在 这 里 选 择 存
- 单 击 N e x t 下 一 个
会 看 到 一 个 摘 要 对 话 框 如 下 图 所 示 它 说 明 正 准
备 创 建 的 DS N 的 参 数
- 单 击 F in is h 完 成
这 时 会 看 到 O D B C M ic ros oft A c c e s s 97 S e tu p 设置 对 话 框 的 修 改 版 不 能 像 我 们 在 上 一 节 所 做 的 那 样 在 D a ta S o u rce N a m e数 据 源 名 或 D e s c r ip tio n 描 述 字 段 中 添 加 信 息 了 不 过 其 它 的 都 和 以
前 一 样
- 一
定 要 单 击 Se le c t 选 择 按 钮 输 入 数 据 库 的 名 称 然 后 选 择 想 要 使 用
的 数 据 库 如 果 想 创 建 一 个 新 数 据 库 也 可 以 单 击 C reate |
创 建 |
|
---|---|---|
8. 完 成 配 置 过 程 时 单 击 OK 你 会 在 ODB C D a ta S o u rc e |
A d m in is tra to r |
ODB C |
数 据 源 管 理 员 对 话 框 中 看 到 一 个 新 的 DS N 文 件 项 |
和 我 们 创 建 的 前 一 个 DS N 不 同 这 个 D S N 实 际 上 创 建 可 以 用 文 本 编 辑 器来 查 看 和 编 辑 的 文 件 图 4 .1 显 示 了 我 的 文 件 的 外 观 请 注 意 它 符 合 标 准 的 IN I 文 件 格 式 你 可 以 在 顶 端 看 到 [ O D BC ] 标 题 下 面 是 我 选 择 的 全 部 设 置 这 个 文件 允 许 我 从 V is u a l C + + 选 择 数 据 源 而 机 器 间 的 传 输 也 是 非 常 容 易 的 我 甚 至能 在 安 装 过 程 中 按 要 求 更 改 位 置 在 你 不 知 道 用 户 会 有 什 么 样 的 设 置 时 这一 点 确 实 很 不 错
图 4 .1 S A M P L E .D S N 文件 包含 了从 V is u a l C + + 内部 使用 我的 数据库 时所 需的 全部设 置
记 录 ODBC 事 务
调 试 应 用 程 序 时 加 以 记 录 这 一 点 很 重 要 OD B C D a ta S o u rc e A d m in is tra to r ODB C 数 据 源 管 理 员 对 话 框 也 提 供 了 这 样 的 功 能 可 以 选 择 跟 踪 你 通 过
ODB C 对 数 据 库 进 行 的 各 种 事 务 当 然 这 些 记 录 可 能 会 变 得 相 当 大 但 我 们并 不 是 总 要 使 用 它 们
开 始 记 录 事 务 时 只 要 双 击 控 制 面 板 ( C on tro l P a ne l 中 的 32 位 ODB C 小 程
序 打 开 ODB C D a ta S o u rc e A d m in is tra to r ODB C 数 据 源 管 理 员 对 话 框 选择 T ra c in g 跟 踪 选 项 卡 你 会 看 到 如 下 图 所 示 的 对 话 框 请 注 意 该 对 话 框的 W ind ow s 98 版 本 略 有 不 同
如 你 所 见 有 三 个 单 选 按 钮 确 定 何 时 跟 踪 OD B C 调 用 缺 省 设 置 是 D on 't T ra c e 不 跟 踪 如 果 打 算 调 试 单 个 应 用 程 序 应 该 选 择 A ll th e T im e 全 部时 间 O n e - T ime O n ly 只 一 次 在 下 一 次 连 接 期 间 跟 踪 ODB C 调 用 — — 只要 连 接 一 拆 除 跟 踪 就 关 闭 当 用 户 带 着 特 定 的 问 题 调 用 时 这 是 一 个 不 错 的选 择 可 以 监 视 一 次 会 话 期 间 的 连 接 然 后 用 该 信 息 帮 助 创 建 排 除 错 误 的 计 划
跟 踪 不 会 自 动 开 始 还 要 单 击 对 话 框 右 侧 的 S tart T racin g N o w 现 在 开 始 跟踪 只 要 跟 踪 一 开 始 按 钮 标 题 就 变 成 S top T ra c in g N o w 现 在 停 止 跟 踪 再 次 单 击 按 钮 关 闭 跟 踪 过 程
唯 一 要 担 心 的 其 它 设 置 是 L o g F ile Pa th 记 录 文 件 路 径 ODB C 通 常 在 根目 录 下 的 S Q L .LO G 文 件 中 放 入 事 务 信 息 但 是 也 可 以 将 该 信 息 放 在 网 络 驱动 器 上 或 者 用 户 看 不 到 的 地 方 在 调 试 过 程 中 缺 省 位 置 通 常 就 比 较 适 宜
注 释 除 非 你 想 创 建 自 己 的 日 志 记 录 D L L 否 则 不 要 更 改 Custom Trace DLL 自 定 义 跟 踪 DLL 域 内 的 设 置 在 这 里 列 出 的 D L L — —
ODBCTRAC.D LL — — 负 责 维 持 事 务 记 录
- 2 AD O 和 OL E- DB — — 同 一 问 题 不 同 层 次 的 解 决 方 案
使 用 ADO 时 一 件 让 人 困 惑 的 事 是 需 要 理 解 它 不 是 数 据 库 访 问 的 底 层 解 决方 案 O LE - D B 是 使 用 ADO 的 基 础 它 也 提 供 与 数 据 库 通 信 的 基 础 ADO 只是 O LE - D B 提 供 的 服 务 的 漂 亮 包 装 事 实 上 如 果 你 愿 意 甚 至 可 以 绕 过 ADO 而 直 接 使 用 O LE - D B 但 是 使 用 ADO 开 发 应 用 程 序 的 速 度 要 快 得 多 下 面 的章 节 会 帮 助 你 理 解 O LE - D B 和 ADO
理 解 OLE-DB
那 么 O LE - D B 是 什 么 呢 顾 名 思 义 它 用 OL E 或 者 更 具 体 一 点 是 部
件 对 象 模 型 — — C O M 为 数 据 访 问 提 供 一 套 接 口 就 像 任 何 其 它 的 CO M 对 象一 样 可 以 查 询 创 建 和 撤 销 一 个 O LE - D B 对 象 O LE - D B 对 象 的 来 源 被 称 为提 供 者 你 会 得 到 各 种 O LE - D B 提 供 者 它 们 是 V is u a l C + + 软 件 包 的 一 部 分 也 有 可 能 在 厂 商 升 级 其 数 据 库 产 品 时 提 供 O LE - D B 的 好 处 是 同 一 个 提 供 者可 以 和 任 何 V is u a l S tud io 产 品 协 作 V is u a l C + + V isu a l B a sic V is u a l In te rD e v 和 V isu a l J+ +
O LE - D B 还 依 赖 于 事 件 这 和 任 何 CO M 对 象 一 样 这 些 事 件 说 明 什 么 时 候要 求 更 新 数 据 库 表 以 显 示 其 它 用 户 生 成 的 新 项 或 者 你 所 请 求 的 表 什 么 时 候准 备 好 供 查 看 还 会 看 到 这 样 的 事 件 它 们 用 来 发 送 信 号 通 知 各 种 数 据 库 错 误和 其 它 要 求 马 上 轮 询 的 活 动
M ic ros oft 定 义 了 O LE - D B 用 户 的 四 个 主 要 类 型 下 面 将 各 组 予 以 分 解 从总 体 上 说 明 它 们 是 如 何 帮 助 使 用 O LE - D B 的
-
数
据 提 供 者 用 O LE - D B S D K 软 件 开 发 工 具 箱 创 建 O LE - D B 提 供者 的 人 提 供 者 用 户 与 数 据 库 和 事 件 交 互 作 用 发 信 号 通 知 特 殊 事 情 的发 生
-
数
据 消 费 者 要 求 访 问 包 含 在 数 据 库 中 的 信 息 的 应 用 程 序 系 统 驱 动 程序 或 用 户
-
数
据 服 务 提 供 者 创 建 用 以 增 强 用 户 或 管 理 员 使 用 或 管 理 数 据 库 内 容 能力 的 独 立 实 用 程 序 服 务 的 开 发 者 例 如 开 发 者 可 以 创 建 查 询 引 擎允 许 用 户 用 自 然 语 言 请 求 数 据 库 中 的 信 息 服 务 和 O LE - D B 提 供 者 互 相协 作 成 为 一 个 整 体
-
商
务 部 件 开 发 者 创 建 应 用 程 序 模 块 或 部 件 以 减 少 创 建 数 据 库 应 用 程序 所 需 的 编 码 量 的 开 发 者 部 件 可 能 和 网 格 控 件 一 样 通 用 可 以 快 速 地显 示 数 据 库 中 记 录 的 子 集 或 者 显 示 正 被 访 问 的 数 据 库 类 型 的 专 用 信息
那 么 O LE - D B 和 OD B C 有 什 么 不 同 呢 表 4 .1 说 明 了 这 两 个 产 品 间 的 主要 差 别 我 们 会 在 本 章 的 应 该 在 什 么 时 候 使 用 O LE
- D B ADO 或 ODB C
— 节 中 讨 论 这 些 差 别 是 如 何 影 响 你 的 使 用 决 定 的
不 要 认 为 O LE - D B 和 OD B C 是 两 种 完 全 分 离 可 以 互 相 替 换 的 技 术 ODB C O LE - D B 提 供 者 允 许 你 通 过 O LE - D B 或 ADO 访 问 OD B C 提 供 的 所 有 功 能 换言 之 这 两 种 技 术 是 互 补 的 不 能 完 全 互 相 替 换 可 以 用 ADO 或 O LE - D B 替换 ODB C 吗 可 以 但 如 果 这 样 做 了 将 得 不 到 最 佳 的 应 用 程 序 性 能 O LE - D B 的 整 体 作 用 是 拓 宽 可 以 用 V is u a l C + + 应 用 程 序 访 问 的 数 据 库 类 型 的 范 围 很明 显 如 果 确 实 要 用 单 个 应 用 程 序 访 问 ODB C 和 列 表 数 据 那 么 O LE - D B 为 此提 供 了 较 好 的 解 决 办 法
理 解 ADO
现 在 你 对 O LE - D B 比 较 熟 悉 了 那 么 AD O 适 合 在 哪 里 使 用 呢 如 前 所 述
ADO 为 访 问 O LE - D B 提 供 者 的 功 能 提 供 了 一 种 容 易 的 方 法 换 言 之 ADO 允许 你 快 速 地 创 建 应 用 程 序 允 许 V is u a l C + + 处 理 你 在 直 接 使 用 O LE - D B 时 通 常应 考 虑 的 一 些 细 节 我 已 经 在 第 一 章 关 于 ADO 数 据 连 接 的 章 节 中 提 供 了 关 于ADO 特 征 的 概 述 这 里 就 不 再 讨 论 了
表 4. 1 OL E- DB 与 O DBC 的技术比 较
元素 |
OLE -D E |
ODB C |
描述 |
---|---|---|---|
A ccess 类型 |
部件 |
直接 |
O LE - D B 提 供 与 数 据 交 互 作 用 的 接 口 用 户访问数 据要通过被设 计成与 O LE - D B 交互作用的 部件来完成 |
数 据 访 问特殊化 |
任 何 列 表 数据 |
SQ L |
ODB C 总 被 设 计 成 把 SQ L 用 作 数 据 事 务的 基 础 在 一 些 情 况 下 这 意 味 着 程 序 员 必须做出 让步 强制数 据符合 SQ L 标准 |
驱 动 程 序访问方法 |
部件 |
本机 |
如前所述 所有对 O LE - D B 提供者的 访问都 要 通 过 使 用 各 种 类 型 部 件 的 CO M 接口 ODB C 通常要求 某类直接程序 设计且 特 别 依 赖 数 据 库 厂 商 所 提 供 的 SQ L 兼容性等级 |
程 序 设 计模型 |
CO M |
C |
O LE - D B 依赖于 CO M 向程序员 提供的对提供者的 访问 这意味 着 O LE - D B 是语言无关的 而 ODB C 则使用专 用语言 |
技术标准 |
CO M |
S Q L |
O LE - D B 坚持 M ic ro s o f t 的 CO M 标准 这意 味 着 厂 商 和 专 用 平 台 要 比 ODB C 所 使 用的 SQ L 技术标准 多得多 |
与 O LE - D B 一 样 AD O 也 是 基 于 CO M 的 它 提 供 了 一 个 双 重 接 口 对 本地 操 作 是 ADODB 的 程 序 ID 对 远 程 操 作 是 AD OR 的 程 序 ID 虽 然 注 册 表 像
使 用 分 室 线 程 模 型 那 样 显 示 ADO 线 程 但 AD O 库 本 身 是 种 自 由 线 程 ADO 的 线 程 安 全 依 赖 于 你 所 使 用 的 O LE - D B 提 供 者 换 言 之 如 果 使 用 M ic ros oft 的ODB C OL E - D B 提 供 者 不 会 有 任 何 问 题 如 果 使 用 第 三 方 的 O LE - D B 提 供 者 要 在 假 定 ADO 线 程 安 全 之 前 检 查 厂 商 的 文 档 这 是 在 In te rn e t 或 企 业 网 连 接 上使 用 ADO 时 的 要 求
使 用 ADO 时 会 用 到 七 个 不 同 的 对 象 表 4 .2 列 出 了 这 些 对 象 并 描 述 了 它们 的 使 用 方 法 虽 然 ADO 对 象 的 功 能 层 次 要 比 先 前 技 术 提 供 的 层 次 高 得 多 但 其 中 多 数 对 象 类 型 是 M ic ros oft 已 引 进 的 其 它 技 术 的 复 制 品 我 们 会 在 本 章 的概 述 一 节 更 为 详 细 地 讨 论 ADO 的 类
注 释 一 些 A D O 对 象 由 接 口 而 不 是 由 实 际 类 来 表 示 表 4 . 2 还 说 明 了 对 象的 关 联 关 系 它 帮 助 你 理 解 如 何 导 出 并 非 由 Visual C++ 类 直 接 表 示的 对 象
表 4.2 AD O 对象概述
对象 |
类 |
描 述 |
---|---|---|
C o mm a n d |
C A DOC o m m a n d |
命 令 对 象 使 用 连 接 或 记 录 集 对 象 执 行 任 务 即 使 可 以 把 执 行 命 令 作 为 连 接 或 记 录 集 对 象 的 一 部 分 命令对象也 要灵活得多 而且允许定义 输出参数 |
C o n n e c tio n |
C A D O C o n n e c tio n |
定义与 O LE - D B 提供者的 连接 可以用 这个对象来执 行 任 务 如 开 始 提 交 和 回 滚 事 务 它 还 提 供 了 打 开或关闭 连接以及执行 命令的方法 |
续 表
E rro r |
错 误 对 象 作 为 连 接 对 象 的 一 部 分 而 创 建 它 提 供 关于 O LE - D B 提供者引 起的错误的额 外信息 单个 错误 对 象 可 以 包 含 多 个 错 误 的 信 息 每 个 错 误 对 象 都 与特定的 事件相关 如 提交事务 |
|
---|---|---|
F ie ld |
字 段 对 象 包 含 记 录 集 对 象 内 的 单 列 数 据 换 言 之 字 段 可 以 被 视 为 表 中 的 一 列 它 包 含 了 某 类 与 记 录集相关的 所有记录的数 据 |
|
P a ra m e te r |
C A D O P aram eter |
为 命 令 对 象 定 义 单 个 参 数 参 数 修 改 存 储 过 程 或查 询 的 结 果 参 数 对 象 提 供 输 入 输 出 或 同 时 提供输入输 出 |
P ro p e r ty |
某些 O LE - D B 提供者需 要扩充标准的 ADO 对 象 属 性 对 象 代 表 了 完 成 这 一 任 务 的 一 条 途 径 属 性 对象包含属 性 名称 类 型以及值信息 |
|
R e c o rd s e t |
CA D O R e c o rd s e t |
它 包 含 了 返 回 表 中 对 所 选 独 立 元 素 查 询 和 光 标 的 返回 结 果 V is u a l C + + 让 你 选 择 用 单 个 记 录 集 对 象 创建 连 接 和 记 录 集 或 者 用 现 有 的 连 接 对 象 支 持 多 个 记录集对 象 |
4. 3 什 么 时 候 应 该 使 用 OL E- DB AD O 或 OD BC
要 在 访 问 数 据 时 判 断 出 应 该 使 用 哪 一 种 技 术 这 并 不 容 易 可 能 需 要 公 用
实 用 程 序 来 处 理 多 个 数 据 库 类 型 部 分 数 据 可 能 出 现 在 本 地 硬 盘 驱 动 器 上 部分 在 网 络 上 还 有 一 部 分 在 主 机 上 甚 至 客 户 安 装 在 设 备 上 的 产 品 也 会 使 这 种选 择 更 加 困 难 例 如 你 所 期 待 的 ODB C 支 持 级 别 也 许 依 赖 于 所 安 装 的 M ic ros oft O ffic e 的 版 本 因 为 这 个 产 品 不 提 供 ODB C 支 持 你 还 会 发 现 ADO 类 提 供 的对 象 和 方 法 要 比 ODB C 类 多 AD O 可 以 提 供 程 序 中 绝 对 必 须 具 有 的 一 些 特 性
- —
例 如 你 会 发 现 O LE - D B 和 ADO 两 者 都 支 持 D F X _ C u r re n c y 但 在 ODB C
中 没 有 对 应 的 功 能 — — 但 你 要 想 掌 握 它 们 也 必 须 付 出 一 定 的 努 力
注 使 用 ADO 而 不 是 ODBC 的 一 个 原 因 是 A D O 提 供 的 对 象 和 方 法 比 ODBC 多
选 择 O LE - D B 或 OD B C 时 有 几 条 一 般 的 规 则 因 为 ADO 实 际 上 只 是O LE - D B 的 包 装 所 以 这 些 规 则 也 适 用 于 它 下 面 提 供 一 些 基 本 的 原 则 可 以用 来 帮 助 你 决 定 选 择 O LE - D B 还 是 ODB C
- 非
OLE 环 境 如 果 要 访 问 支 持 ODB C 的 数 据 库 而 该 数 据 库 又 在 不 支 持
OL E 的 服 务 器 上 那 么 ODB C 是 最 好 的 选 择
- 非
SQL 环 境 ODB C 在 处 理 SQ L 时 非 常 出 众 处 理 非 SQ L 数 据 库 时
O LE - D B 则 具 有 非 常 明 显 的 优 势
-
OLE
环 境 对 支 持 OL E 的 服 务 器 来 说 选 择 O LE - D B 还 是 ODB C 也 许是 希 望 各 半 如 果 有 ODB C 驱 动 程 序 可 供 利 用 那 么 使 用 ODB C 是 一个 好 主 意 否 则 就 只 有 选 择 O LE - D B 了
-
所 需
的 互 操 作 性 如 果 需 要 可 互 操 作 的 数 据 库 部 件 那 么 只 有 选 择
O LE - D B
其 它 的 问 题 往 往 是 复 合 问 题 或 者 至 少 是 失 去 了 可 以 用 来 区 别 这 两 种 技 术
的 方 便 的 规 则 例 如 有 一 些 特 征 是 ADO 和 OD B C 所 共 有 的 其 中 一 个 特 征是 V is u a l C + + 允 许 你 直 接 访 问 任 一 种 技 术 这 意 味 着 可 以 完 全 访 问 ADO 和ODB C 都 提 供 的 每 一 个 特 征 是 的 这 确 实 不 错 但 也 有 缺 陷 因 为 谈 到 访 问不 能 说 一 种 技 术 明 显 地 优 于 另 一 种 技 术
如 果 做 了 错 误 的 决 定 一 些 熟 悉 的 技 术 实 际 上 会 帮 助 你 把 应 用 程 序 从 ODB C 转 移 到 ADO 或 反 方 向 转 移 两 种 技 术 都 依 靠 数 据 库 对 象 来 管 理 基 础 的 DB M S 而 记 录 集 对 象 则 包 含 针 对 DB M S 的 查 询 结 果 另 外 OD B C 和 ADO 都 以 相 似的 成 员 来 使 用 数 据 库 和 记 录 集 对 象 即 使 要 对 类 和 成 员 名 称 做 一 些 更 改 你 仍会 发 现 ODB C 和 AD O 程 序 设 计 的 代 码 非 常 相 似
ODB C 和 AD O 都 依 靠 外 部 驱 动 程 序 来 完 成 任 务 但 是 用 ADO 还 可 以 从M ic ros oft J e t 引 擎 获 得 额 外 的 帮 助 这 个 额 外 的 支 持 是 如 何 使 程 序 设 计 更 加 容 易的 呢 考 虑 一 下 要 在 哪 里 执 行 两 个 依 赖 不 同 引 擎 的 数 据 库 的 外 部 连 接 在ODB C 下 必 须 人 工 执 行 全 部 所 需 的 设 置 使 用 AD O 意 味 着 M ic ros oft J e t 引擎 会 为 你 执 行 这 些 设 置 可 惜 的 是 让 ADO 做 这 个 工 作 意 味 着 会 失 去 控 制 级别 和 一 些 灵 活 性 而 这 正 是 你 从 一 开 始 就 想 用 C+ + 获 取 数 据 的 原 因
注 ODBC 和 ADO 具 有 相 似 的 特 征 如 记 录 集 和 数 据 库 对 象 尽 管 M F C 利 用这 些 对 象 的 方 式 完 全 不 同
有 一 个 地 方 绝 对 不 能 使 用 AD O 如 果 要 访 问 16 位 数 据 就 不 能 用 ADO 不 管 你 怎 么 想 都 必 须 用 ODB C 然 而 几 乎 没 有 人 还 在 使 用 16 位 数 据 库 了 大 多 数 的 新 工 程 都 会 使 用 32 位 接 口 这 意 味 着 会 有 一 个 选 择 老 的 工 程 已 经 有了 嵌 入 代 码 的 数 据 访 问 方 法 所 以 你 也 实 在 没 有 必 要 在 这 里 做 决 定
ODB C 的 一 点 不 足 是 不 能 像 以 前 使 用 AD O 那 样 跟 踪 事 务 以 M ic ros oft J e t 引 擎 使 用 ADO 时 应 该 得 到 事 务 的 工 作 区 级 的 支 持 ODB C 只 提 供 数 据 库 级的 事 务 支 持 这 就 是 说 可 以 从 几 个 不 同 的 工 作 区 跟 踪 事 务 这 使 得 调 试 非 常困 难 还 可 能 导 致 其 它 类 型 的 问 题
注 释 处 理 ODBC 数 据 库 时 A D O 提 供 数 据 库 级 的 支 持 这 和 ODBC 提 供 的支 持 层 次 是 相 同 的 除 非 你 使 用 Microsoft Jet 引 擎 否 则 得 不 到 工作 区 级 事 务 支 持 的 好 处
4 Vi su al C ++ OD BC OL E- DB 及 AD O 类 概 述
用 C+ + 创 建 数 据 库 应 用 程 序 的 讨 论 终 于 涉 及 到 了 类 为 了 进 行 实 际 的 工 作你 需 要 了 解 类 每 个 类 都 执 行 非 常 特 殊 的 任 务 所 以 知 道 在 哪 里 使 用 哪 一 个类 至 关 重 要 所 有 类 的 总 目 标 都 是 从 服 务 器 获 得 特 定 的 数 据 并 在 屏 幕 或 打 印机 上 显 示 出 来
注 这 确 实 可 以 帮 助 你 把 数 据 库 对 象 看 作 是 将 数 据 从 数 据 源 装 入 你 的 计 算机 的 一 种 管 道
我 们 要 了 解 的 第 一 个 类 是 C d ata b as e( O D B C ) 或 C A D O C o n n e c tio n ( ADO) 用这 些 类 创 建 的 对 象 让 你 得 到 对 数 据 库 内 数 据 的 访 问 既 可 以 创 建 指 向 特 定 记 录的 指 针 也 可 以 下 载 整 个 查 询 数 据 库 对 象 创 建 你 需 要 的 连 接 获 得 的 数 据 访问 的 类 型 依 赖 于 是 创 建 了 窗 体 视 图 所 有 数 据 的 单 记 录 显 示 还 是 记 录 视 图 与
特 定 标 准 相 匹 配 的 所 有 记 录 的 网 格 显 示
— 旦 连 接 了 数 据 库 就 要 有 某 种 容 器 来 保 存 它 所 包 含 的 内 容
CR e c o rd s e t( O D BC ) 和 C ADOR e c o rd s e t( ADO ) 类 在 这 里 发 挥 作 用 记 录 集 保 存 最终 要 在 屏 幕 上 显 示 的 数 据 这 有 助 于 把 记 录 集 看 作 是 保 存 数 据 库 中 数 据 的 容 器如 下 所 述 有 三 种 类 型 的 记 录 集
-
表
表 型 记 录 集 代 表 了 数 据 库 某 个 表 内 的 数 据 你 可 以 对 这 样 的 单 个 表进 行 任 何 处 理 包 括 添 加 删 除 或 编 辑 记 录
-
动
态 集 需 要 用 查 询 从 数 据 库 的 一 个 或 多 个 表 中 提 取 信 息 时 会 用 到 动态 集 型 记 录 集 与 表 型 记 录 集 一 样 可 以 添 加 删 除 或 编 辑 动 态 集 型 记录 集 中 的 记 录
-
快
照 这 是 数 据 库 一 个 或 多 个 表 中 所 包 含 的 数 据 的 静 态 拷 贝 与 动 态 集一 样 要 通 过 查 询 来 提 取 信 息 与 动 态 集 不 一 样 的 是 你 不 能 修 改 快 照中 记 录 的 内 容 但 是 可 以 用 快 照 型 记 录 集 查 找 数 据 或 产 生 报 告
你 可 能 已 经 注 意 到 了 我 在 谈 论 记 录 集 时 提 到 了 术 语 查 询 查 询 就 是一 个 简 单 的 提 问 查 询 时 所 做 的 一 切 工 作 就 是 要 求 数 据 库 提 供 一 批 符 合 特 定 标准 的 记 录 使 用 ODB C 时 要 依 靠 CR e c o rd s e t 类 数 据 成 员 来 更 改 想 要 看 的 记 录的 查 询 ADO 有 一 点 不 同 可 以 用 CA D O Co m m a n d 类 创 建 特 殊 的 查 询 或 用C ADOC onne c t io n 执 行 标 准 的 查 询 CA D O Co m m a n d 要 比 C ADOC onne c t io n 灵活 得 多 可 以 用 它 来 执 行 多 种 和 数 据 库 有 关 的 任 务 例 如 可 以 用 它 操 纵 数 据库 的 结 构 或 者 执 行 其 它 的 管 理 任 务
本 章 中 我 们 要 考 察 的 最 后 一 组 类 是 实 际 浏 览 数 据 时 使 用 的 类
CR e c o rd V ie w ( O D BC ) 和 C ADOR e c o rd V ie w ( A DO ) 类 允 许 你 实 际 查 看 检 索 到 的 数据 本 质 上 说 这 些 类 要 完 成 的 任 务 就 是 将 数 据 从 记 录 集 对 象 移 动 到 对 话 框 或窗 口 上 的 控 件 中 你 还 可 以 使 用 这 些 类 来 检 测 何 时 到 达 记 录 集 的 开 始 或 结 尾