VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - VB访问数据库的方案比较
发表评论(0)作者:王兰君, 平台:VB6.0+Win98, 阅读:10920, 日期:2001-02-17
VB访问数据库的方案比较
王兰君
  
用Visual Basic 访 问 数 据 库 有 许 多 可 供 选 择 的 方 案, 但 是 选 择 那 种 方 案 更 能 使 开 发 队 伍 和 应 用 软 件 在 今 天 处 于 有 利 位 置 并 且 适 应 将 来 的 发 展 方 向 呢 ? 这 些 解 决 方 案 各 有 什 么 特 点 ? 本 文 将 说 明 这 些 问 题, 帮 助 使 用VB5 的 用 户 和 准 备 使 用VB5 的 用 户 选 择 和 决 定 哪 种 数 据 库 访 问 方 案 对 现 在 很 有 意 义 而 且 适 应 将 来 的 应 用 程 序。

---- 当 今,RDO2.0 是Visual Basic 访 问 关 系 型ODBC 数 据 源 的 最 佳 界 面 接 口, 就 如DAO/Jet 是Jet 和ISAM( 顺 序 索 引 查 找 方 法) 类 型 数 据 源 首 选 的 访 问 接 口 一 样。 这 两 种 方 法 都 完 整 的 集 成 于Visual Basic 中, 并 且 形 成 了Visual Basic 核 心 的 数 据 访 问 策 略。RDO2.0 的 数 据 访 问 速 度 远 快 于RDO1.0 的 访 问 速 度, 并 且RDO 和DAO 都 已 发 展 为 相 当 成 熟 的 技 术。 因 此 假 如 用 户 需 要 访 问ODBC 数 据 源, 可 以 使 用RDO; 如 果 需 要 访 问ISAM 或Jet 类 型 数 据 源, 那 么 就 使 用DAO/Jet。

---- Active Data Objects(ADO) 作 为 另 一 种 可 供 选 择 的 技 术 出 现, 正 在 逐 渐 代 替 其 他 数 据 访 问 接 口。 由 于RDO 同ADO 的 体 系 结 构 非 常 相 似, 因 此 当 需 要 将RDO 数 据 接 口 转 换 为ADO 时, 仍 可 以 使 用RDO 设 计 的 代 码。

---- 有 人 曾 提 出 这 样 的 问 题: 是 否 现 在 就 使 用ADO? 虽 然VB5 使 用ADO 的 数 据 访 问 接 口 是 可 能 的, 但 对 于 目 前ADO 的 使 用 状 况, 将RDO2.0 或DAO3.5 同ADO 做 比 较 显 得 意 义 并 不 很 大。 所 以 回 答 是: 如 果 感 觉 方 便, 还 是 尽 早 转 移 到ADO, 这 意 味 着 应 用 软 件 对 各 种 数 据 访 问 接 口 将 继 续 予 以 支 持。ADO 是 独 立 于 开 发 工 具 和 开 发 语 言 的 简 单 而 且 容 易 使 用 的 数 据 接 口, 同ADO 相 比, 其 他 数 据 访 问 接 口 都 会 黯 然 逊 色。

---- 所 有 的 数 据 源 都 可 以 通 过ADO 来 访 问, 在 今 天 已 逐 渐 成 为 现 实。

VB 访 问 数 据 库 技 术 的 历 史
---- 综 观 过 去 的 几 年, 使 用Visual Basic 的 客 户 曾 设 计 出 数 不 胜 数 的 程 序 和 组 件 来 建 立 商 务 解 决 方 案。 大 约80% 以 上 的 应 用 程 序 是 用 来 访 问 以 下 这 些 数 据 的:ASCII 文 本 文 件、SQL 数 据 库 以 及 大 型 机 数 据 库。 早 期 的Visual Basic 数 据 访 问 工 具 只 是 简 单 的ASCII 文 件 的 访 问 工 具, 极 少 数SQL Server 的 前 端 应 用 程 序 是 使 用 鲜 为 人 知 的 数 据 接 口VBSQL 编 写 的。 然 而, 在Visual Basic 3.0 时 代 许 多 用 户 强 调 需 转 移 访 问 包 含 远 程 数 据 源 的ISAM 数 据, 为 此Microsoft 设 计 了Microsoft Jet Database Engine ( 或 简 称 为Jet) 和Data Access Object(DAO), 使 得Visual Basic Access 开 发 人 员 很 容 易 地 同Jet 接 口。 直 至 前 两 年, 对Visual Basic 和 其 使 用 者 的 需 求 又 包 含 了 更 快 的 访 问 远 程 数 据 和 对ODBC 数 据 源 访 问 的 优 化。
---- 当 选 择 在 此 讨 论 的 哪 种 技 术 是 最 佳 技 术 时, 需 要 注 意 两 点: 代 码 的 重 用 和 开 发 者 实 现 选 择 的 数 据 库 访 问 方 案 的 能 力。 设 计 者 常 常 为 实 现 或 追 求 一 种 更 特 别 的 性 能 而 使 用 有 更 多 控 件 的 奇 异 方 案, 这 样 设 计 出 来 的 应 用 程 序 只 会 支 持 起 来 更 复 杂 或 维 护 时 更 困 难。 开 发 人 员 和 他 们 的 管 理 人 员 需 要 在Visual Basic 的 开 发 小 组 和 各 种 数 据 库 接 口 开 发 小 组 中 注 意 避 免 这 种 趋 势。 这 些 小 组 协 调 努 力 简 化VB5 中 的 数 据 访 问 接 口 会 使 程 序 的 安 全 性 和 速 度 更 好。VB5 也 包 含 了 全 新 的 查 询 连 接 生 成 器, 即 User Connection 设 计 器, 它 使 用 Visual Basic 新 的 ActiveX 设 计 器 体 系 结 构, 对 要 编 程 的 数 据 访 问 提 供 设 计 时 的 支 持。 允 许 在 设 计 时 创 建 连 接 并 查 询 对 象( 基 于 RDO rdoConnection 和 rdoQuery 对 象)。 并 把 这 些 连 接 和 查 询 对 象 当 作 工 程 级 对 象。 可 预 先 设 置 属 性、 定 义 新 属 性 和 方 法 并 给 对 象 编 写 代 码 来 捕 捉 事 件。

---- 这 不 仅 为 响 应 由 连 接 和 查 询 而 引 起 的 事 件, 而 且 为 在 运 行 时 调 用 已 有 存 储 过 程 和 用 户 定 义 的 查 询 提 供 了 简 单 的 方 法。 使 用User Connection 设 计 器 这 种 技 术, 代 码 可 减 少10 倍, 性 能 却 没 有 任 何 损 失。

---- 现 在 用VB5 来 建 服 务 器 端 组 件 或 前 端 应 用 程 序, 可 以 使 用 的 数 据 库 接 口 方 案 至 少 有 九 种。 每 一 种 方 案 都 可 满 足 用 户 特 定 的 需 要, 比 如 特 殊 的 数 据 源 和 用 户 开 发 的 技 能 等。

Visual Basic 访 问 数 据 库 的 现 状
---- 下 面 的 表 格 列 出 了 目 前 在VB5 中 有 效 的 数 据 访 问 接 口 方 法, 一 部 分 是 简 单 的 应 用 程 序 接 口 界 面(APIs), 但 大 部 分 是 组 件 对 象 模 型 界 面(COM)。 这 两 类 数 据 库 接 口 界 面 事 实 上 在 任 何 一 种 开 发 语 言 中 都 包 括。
  接 口 界 面 访 问 对 象 16/32 位 支 持
VBSQL 通 过DB-Library 访 问 微 软 的SQL Server 16 位 和32 位
ODBC API 任 何 一 种ODBC 数 据 源 16 位 和32 位
DAO/Jet 本 地 的Jet/Access .MDB、 顺 序 索 引 数 据 库(ISAM) 和 任 何ODBC 数 据 源。 16 位 和32 位
DAO/ODBC Direct 任 何 一 种ODBC 数 据 源( 经 过RDO) 32 位
RDO 2.0 任 何 一 种ODBC 数 据 源(Level Ⅰ 或 Ⅱ) 32 位
ADO * 任 何 一 种ODBC 数 据 源 和 任 何 经 过OLE DB 界 面 接 口 的 数 据 源 32 位


---- *ADO 不 包 括 在VB5 中, 目 前 的 许 多 网 络 产 品 支 持ADO 如:IIS、Visual Studio 等, 也 会 发 行 在VB 的 下 一 版 本VB6 中。

---- 上 表 列 出 了 用VB5 程 序 代 码 访 问 数 据 库 的 几 种 接 口 界 面, 但 是 许 多 开 发 人 员 也 使 用 一 些 数 据 库 绑 定 的 控 件 来 实 现 一 些 简 单 重 复 的 功 能 如: 用 户 数 据 的 输 入、 显 示、 筛 选 等 接 口 界 面。VB 也 支 持 对 多 种 数 据 源 访 问 的 控 件, 这 些 控 件 在VB 和COM 界 面 接 口 之 间 起 着 媒 介 作 用。 这 些 控 件 提 供 了 一 种 减 少 代 码 实 现 数 据 访 问 的 途 径, 该 方 法 简 化 了 代 码 并 使 程 序 员 不 必 亲 自 处 理 检 索 和 更 新 数 据 的 底 层 结 构 和 机 制。 它 赋 予 程 序 员 很 大 的 灵 活 性, 因 为 可 以 使 用 同 样 的 对 象、 属 性 和 方 法 来 处 理 各 种 不 同 的 数 据 库 格 式。 同 时, 如 果 从 一 种 数 据 库 格 式 变 到 另 一 种 格 式( 例 如, 将 本 地 的 Microsoft Access 数 据 库 转 换 为 网 络 上 的 SQL Server 数 据 库), 只 需 变 动 少 量 的 代 码 就 可 以 适 应 这 种 改 变。 甚 至 可 以 创 建 这 样 的 应 用 程 序, 在 单 一 的 查 询 或 报 表 中 连 接 来 自 多 个 不 同 数 据 库 的 表。

  数 据 绑 定 控 件 访 问 对 象 16/32 位 支 持
Data Control DAO/Jet 数 据 界 面 接 口 16 位 和32 位
Data Control/ODBC Direct DAO/ODBC Direct 数 据 界 面 接 口 32 位
RemoteData Control/RDC RDO 数 据 界 面 接 口 32 位
Advanced Data Connector/ADC * ADO 数 据 界 面 接 口 32 位


---- *ADO 不 包 括 在VB5 中, 目 前 的 许 多 网 络 产 品 支 持ADO 如:IIS、Visual Studio 等, 也 会 发 行 在VB 的 下 一 版 本VB6 中。

---- 经 过 数 年 发 展,ODBC 技 术 日 臻 完 善 已 成 为 访 问 远 程 数 据 的 主 要 方 法, 而Jet 成 为 本 地Jet 和ISAM 数 据 接 口 的 首 选 方 案。 虽 然 这 些 方 法 在 不 同 程 度 上 有 功 能 交 迭 的 地 方, 在 论 证 选 用 数 据 库 访 问 的 方 法 时, 主 要 还 应 满 足 用 户 在 特 殊 应 用 程 序 中 对 具 体 数 据 接 口 的 访 问。 并 不 是 所 有 人 对 数 据 访 问 中 的 一 些 缩 写 词 都 了 解。 下 表 从VB 的 观 点 简 要 介 绍 这 些 缩 写 词 的 含 义 和 各 种 数 据 访 问 方 法 的 功 能 比 较。

  数 据 访 问 接 口 功 能 及 含 义
ADC 高 级 数 据 连 接 器(Advanced Data Connector): 提 供 绑 定ADO 数 据 源 到 窗 体 的 数 据 绑 定 控 件 上。ADC 主 要 是 一 种 直 接 访 问 或 者 通 过ADO 访 问 远 程 OLE DB 对 象 的 一 种 技 术, 它 也 支 持 主 要 应 用 在 微 软IE 浏 览 器 上 的 数 据 绑 定 控 件。 它 是 特 地 为Web 上 的 浏 览 器 为 基 础 的 应 用 程 序 而 设 计 的。
ADO Active 数 据 对 象(Active Data Objects):ADO 实 际 是 一 种 提 供 访 问 各 种 数 据 类 型 的 连 接 机 制。ADO 设 计 为 一 种 极 简 单 的 格 式, 通 过ODBC 的 方 法 同 数 据 库 接 口。 可 以 使 用 任 何 一 种ODBC 数 据 源, 即 不 止 适 合 于SQL Server、Oracle、Access 等 数 据 库 应 用 程 序, 也 适 合 于Excel 表 格、 文 本 文 件、 图 形 文 件 和 无 格 式 的 数 据 文 件。ADO 是 基 于OLE-DB 之 上 的 技 术, 因 此ADO 通 过 其 内 部 的 属 性 和 方 法 提 供 统 一 的 数 据 访 问 接 口 方 法。
DAO 数 据 访 问 对 象(Data Access Objects): 是 一 种 面 向 对 象 的 界 面 接 口。 通 过DAO/Jet 功 能 可 以 访 问ISAM 数 据 库, 使 用DAO/ ODBC Direct 功 能 可 以 实 现 远 程RDO 功 能。 使 用DAO 的 程 序 编 码 非 常 简 单,DAO 提 供 丰 富 的 游 标(Cursor) 类 型 的 结 果 集 和 非 游 标(Cursor-Less) 类 型 的 结 果 集, 同DDL( 数 据 描 述 语 言) 的 功 能 很 类 似。
DAO 模 型 是 设 计 关 系 数 据 库 系 统 结 构 的 对 象 类 的 集 合。 它 们 提 供 了 完 成 管 理 这 样 一 个 系 统 所 需 的 全 部 操 作 的 属 性 和 方 法, 包 括 创 建 数 据 库, 定 义 表、 字 段 和 索 引, 建 立 表 间 的 关 系, 定 位 和 查 询 数 据 库 等 工 具。
Jet 数 据 连 接 性 引 擎 技 术(Joint Engine Technology): 是 一 种 基 于 工 作 站 通 过DAO 的 数 据 库 访 问 机 制。 虽 然 可 以 通 过 微 软Access 提 供 的ODBC 驱 动 程 序 访 问Jet 数 据 库, 但 使 用 这 些 驱 动 程 序 在 功 能 上 有 所 限 制。Jet 机 制 有 自 己 的 查 询 和 结 果 集 处 理 功 能, 并 可 对 同 种 或 异 种 数 据 源 作 查 询 处 理。
ODBC 开 放 式 的 数 据 库 连 接(Open Database Connectivity): 是 一 种 公 认 的 关 系 数 据 源 的 接 口 界 面。 它 快 而 轻 并 且 提 供 统 一 接 口 的 界 面,ODBC 对 任 何 数 据 源 都 未 作 优 化。
ODBC Direct 是 一 种 基 于DAO 对 象 的 新 的DAO 模 式, 其 方 法 和 属 性 与RDO 功 能 相 同。 使 用 在 有DAO 代 码 存 在 的 场 合, 可 用 来 访 问 远 程 数 据 源。
OLE DB 是 一 种 底 层 数 据 访 问 界 面 接 口。 是 用 于 第 三 方 驱 动 程 序 商 家 开 发 输 出 数 据 源 到ADO- 技 术 的 应 用 程 序 或 用 于C++ 的 开 发 者 开 发 定 制 的 数 据 库 组 件。OLE DB 不 能 被VB 直 接 调 用。
RDC 远 程 数 据 访 问 控 件(RemoteData Control): 是 一 种 对RDO 数 据 绑 定 的 控 件。 可 以 输 出 特 定 的 结 果 集 到 数 据 源 控 件。
RDO 远 程 数 据 对 象(Remote Data Objects): 远 程 数 据 对 象 和 集 合 为 使 用 代 码 来 创 建 和 操 作 一 个 远 程 ODBC 数 据 库 系 统 的 各 个 部 件 提 供 了 一 个 框 架。 对 象 和 集 合 都 具 有 描 述 数 据 库 的 各 个 部 件 特 征 的 属 性 以 及 用 来 操 作 这 些 部 件 的 方 法。 可 以 在 对 象 和 集 合 之 间 建 立 起 关 系, 这 些 关 系 就 代 表 了 数 据 库 系 统 的 逻 辑 结 构。RDO 是ODBC API 的 一 个 浅 层 界 面 接 口。 是 专 为 访 问 远 程ODBC 关 系 数 据 源 而 设 计 的。
VBSQL 是Visual Basic 结 构 化 查 询 语 言。 是 一 种 基 于API 的 接 口 方 法, 几 乎 与C 的DB-Library API 相 同。VBSQL 只 支 持 微 软 的SQL Server。VBSQL 快 而 且 轻 但 不 支 持 对 象 界 面。


Visual Basic 访 问 数 据 库 的 前 景
---- 近 来 随 着Web 应 用 软 件 的 迅 速 发 展 和 现 有 数 据 存 储 形 式 的 多 种 多 样,Visual Basic 访 问 数 据 库 的 解 决 方 案 面 临 诸 如 快 速 提 取 分 布 于 企 业 内 部 和 外 部 有 用 商 业 信 息 等 的 多 种 挑 战。 为 此Microsoft 提 出 一 种 新 的 数 据 库 访 问 策 略, 即“ 统 一 数 据 访 问”(Universal Data Access) 的 策 略。“ 统 一 数 据 访 问” 提 供 了 高 性 能 的 存 取 包 括 关 系 型 和 非 关 系 型 在 内 的 多 种 数 据 源, 提 供 独 立 于 开 发 工 具 和 开 发 语 言 的 简 单 的 编 程 接 口, 这 些 技 术 使 得 企 业 集 成 多 种 数 据 源、 选 择 更 好 的 开 发 工 具、 应 用 软 件、 操 作 平 台、 建 立 容 易 维 护 的 解 决 方 案 成 为 可 能。
---- “ 统 一 数 据 访 问”(Universal Data Access) 的 基 础 是Microsoft 的 数 据 访 问 组 件。 这 些 组 件 包 括ActiveX Data Objects(ADO)、Remote Data Service(RDS, 也 称“ 高 级 数 据 连 接 器” 或ADC)、OLE DB 和ODBC。