一 、 VB 数 据 库 的 体 系 结 构 具 体 的 VB 的 数 据 库 结 构 请 先 看 下 图 。 可 见 VB 数 据 库 的 核 心结 构 是 所 谓 的 MicroSoft JET 数 据 库 引 擎 , JET 引 擎 的 作 用 就 像 是 一 块“ 面 板 ” , 在 其 上 可 以 插 入 多 种 ISAM ( Indexed Sequential Access Method, 即 索 引 顺 序 存 取 方 法 ) 数 据 驱 动 程 序 。 JET 引 擎 为 Access 格 式 数据 库 提 供 了 直 接 的 内 部 ( build-in ) 支 持 , 这 就 是 VB 对 Access 数 据 库具 有 丰 富 支 持 的 真 正 原 因 。 VB 专 业 版 中 提 供 了 FoxPro 、 dBASE ( 或Xbase ) 、 Paradox 、 Btrieve 等 数 据 库 的 ISAM 驱 动 程 序 , 这 就 使 得 VB 能支 持 这 些 数 据 库 格 式 。 另 外 , 其 他 的 许 多 兼 容 ISAM 的 驱 动 程 序 也可 以 通 过 从 厂 商 的 售 后 服 务 得 到 。 因 而 从 理 论 上 说 , VB 能 支 持 所有 兼 容 ISAM 的 数 据 库 格 式 ( 前 提 是 只 需 获 得 这 些 数 据 库 的 ISAM 驱动 接 口 程 序 ) 。 由 上 可 见 , Ms JET 引 擎 实 质 上 提 供 了 : 一 个 符 合ANSI 标 准 的 语 法 分 析 器 ; 为 查 询 结 果 集 的 使 用 而 提 供 的 内 存 管 理功 能 ; 同 所 支 持 的 数 据 库 的 外 部 接 口 ; 为 应 用 代 码 提 供 的 内 部 接口 。 实 际 上 , 在 VB 中 从 一 种 数 据 库 类 型 转 化 为 另 一 种 数 据 库 类 型几 乎 不 需 要 或 只 需 要 很 少 的 代 码 修 改 。 而 且 , 尽 管 dBASE 、 Paradox本 身 的 DDL ( Data Definition Language , 即 数 据 定 义 语 言 ) 和 DML ( DataManipulation Language , 即 数 据 操 纵 语 言 ) 是 非 结 构 化 查 询 的 , 但 它 们仍 然 可 以 使 用 VB 的 SQL 语 句 和 JET 引 擎 来 操 纵 。 从 VB 的 程 序 代 码 的角 度 来 看 , ODBC , ISAM 驱 动 程 序 以 及 Ms Access 数 据 库 的 整 个 外 部结 构 够 可 以 统 一 为 一 个 一 致 的 编 程 接 口 。 也 即 是 说 , 提 供 给 VB 应用 程 序 员 的 记 录 集 对 象 视 图 同 所 使 用 的 数 据 库 格 式 及 类 型 是 相 互独 立 的 。 即 对 FoxPro 等 数 据 库 仍 然 可 以 使 用 众 多 的 数 据 库 存 取 对 象变 量 , 这 就 为 非 Access 数 据 库 的 访 问 提 供 了 最 重 要 的 方 法 。
二 、使 用 非 Access 数 据 库 时 的 参 数 设 置 及 配 置 文 件 的 参 数 读 取 如 果 在 VB的 程 序 中 使 用 了 数 据 库 的 操 作 , 将 应 用 程 序 生 成 EXE 文 件 或 打 包 生成 安 装 程 序 后 , 则 必 须 提 供 一 个 配 置 ( .INI ) 文 件 , 在 INI 文 件 中可 以 对 不 同 类 型 的 数 据 库 进 行 设 置 。 如 果 找 不 到 这 个 INI 文 件 , 将会 导 致 不 能 访 问 数 据 库 。 通 常 情 况 下 , INI 文 件 的 文 件 名 和 应 用 程序 的 名 称 相 同 , 所 以 如 果 没 有 指 明 , VB 的 程 序 会 在 Windows 子 目 录中 去 找 和 应 用 程 序 同 名 的 INI 文 件 。 可 以 使 用 VB 中 的SetDataAccessOptions 语 句 来 设 置 INI 文 件 。 SetDataAccessOptions 语 句 的 用法 如 下 : SetDataAccessOptions 1 , IniFileName 其 中 IniFileName 参 数 指 明 的 是INI 文 件 的 带 路 径 的 文 件 名 。 值 得 注 意 的 是 , 当 应 用 程 序 找 不 到 这个 INI 文 件 时 , 或 在 调 用 OpenDataBase 函 数 时 对 其 Connect 参 数 值 没 有设 定 为 VB 规 定 的 标 准 值 , 如 对 FoxPro 2.5 格 式 设 定 为 了 “ FoxPro; ” (应 为 “ FoxPro 2.5; ” ) , 或 者 没 有 安 装 相 应 的 ISAM 驱 动 程 序 , 则 此时 VB 会 显 示 一 条 错 误 信 息 “ Not Found Installable ISAM ” 。 通 常 , INI 文件 在 应 用 程 序 分 发 出 去 以 前 已 经 生 成 , 或 者 在 安 装 时 动 态 生 成 ,也 可 以 在 应 用 程 序 中 自 己 生 成 。 通 常 这 种 INI 文 件 中 有 “ [Options] ”、 “ [ISAM] ” 、 “ [Installed ISAMs] ” 、 “ [FoxPro ISAM] ” 、 “ [dBASEISAM] ” 、 “ [Paradox ISAM] ” 等 设 置 段 , 对 于 一 个 完 整 的 应 用 程 序则 还 应 有 一 个 属 于 应 用 程 序 自 己 的 设 置 段 如 “ [MyDB] ” 。 可 在 其中 设 置 DataType 、 Server 、 DataBase 、 OpenOnStartup 、 DisplaySQL 、QueryTimeOut 等 较 为 重 要 的 数 据 库 参 数 , 并 以 此 限 定 应 用 程 序 一 般 的运 行 环 境 。 Windows API 接 口 函 数 在 Kernel.exe 动 态 链 接 库 中 提 供 了 一个 OSWritePrivateProfileString 函 数 , 此 函 数 能 按 Windows 下 配 置 文 件 ( .INI) 的 书 写 格 式 写 入 信 息 。 在 通 常 情 况 下 , 应 用 程 序 还 需 要 在 运 行时 读 取 配 置 文 件 内 相 关 项 的 参 数 。 比 如 PageTimeOut ( 页 加 锁 超 时 时限 ) 、 MaxBufferSize ( 缓 冲 区 大 小 ) 、 LockRetry ( 加 锁 失 败 时 重 试 次数 ) 等 参 数 , 通 过 对 这 些 参 数 的 读 取 对 应 用 程 序 运 行 环 境 的 设 定、 潜 在 错 误 的 捕 获 等 均 会 有 很 大 的 改 善 。 设 此 应 用 程 序 的 配 置 文件 为 MyDB.INI , 则 具 体 过 程 如 下 :
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



