一叶扁舟
论坛版主
论坛版主
  • 注册日期2003-08-15
  • 发帖数132
  • QQ8415821
  • 铜币53枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1925回复:1

Jet 3.x database Engine

楼主#
更多 发布于:2003-08-24 16:26
用VB6.0编写数据库程序,是不是Data控件不能识别Jet 4.x类型的数据库文件,而提示“不能识别的数据库格式”!

而Microsoft Access 2000 对Jet 3.x或更低版本的数据库文件只能支持查看却不能编辑!

请提供创建OLE DB数据源的方法!
喜欢0 评分0
网赚 http://www.virtualvisit.cn/index.php?inductid=1452558de6b58b483565334b93fb034e
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2003-08-25 00:55
OLE DB 的 概 念 与 编 程

OLE DB 的 概 念 ---- 简 单 地 说,OLE DB 是 一 种 技 术 标 准, 目 的 是 提 供 一 种 统 一 的 数 据 访 问 接 口, 这 里 所 说 的“ 数 据”, 除 了 标 准 的 关 系 型 数 据 库 中 的 数 据 之 外, 还 包 括 邮 件 数 据、Web 上 的 文 本 或 图 形、 目 录 服 务(Directory Services), 以 及 主 机 系 统 中 的IMS 和VSAM 数 据。OLE DB 标 准 的 核 心 内 容 就 是 要 求 以 上 这 些 各 种 各 样 的 数 据 存 储(Data Store) 都 提 供 一 种 相 同 的 访 问 接 口, 使 得 数 据 的 使 用 者( 应 用 程 序) 可 以 使 用 同 样 的 方 法 访 问 各 种 数 据, 而 不 用 考 虑 数 据 的 具 体 存 储 地 点、 格 式 或 类 型。

---- OLE DB 标 准 的 具 体 实 现 是 一 组C++ API 函 数, 就 像ODBC 标 准 中 的ODBC API 一 样, 不 同 的 是,OLE DB 的API 是 符 合COM 标 准、 基 于 对 象 的(ODBC API 则 是 简 单 的C API)。 使 用OLE DB API, 可 以 编 写 能 够 访 问 符 合OLE DB 标 准 的 任 何 数 据 源 的 应 用 程 序, 也 可 以 编 写 针 对 某 种 特 定 数 据 存 储 的 查 询 处 理 程 序(Query Processor) 和 游 标 引 擎(Cursor Engine), 因 此OLE DB 标 准 实 际 上 是 规 定 了 数 据 使 用 者 和 提 供 者 之 间 的 一 种 应 用 层 的 协 议(Application-Level Protocol)。

---- 即 将 发 布 的 微 软 最 新 数 据 库 产 品SQL Server 7.0 的 查 询 处 理 程 序 就 是 使 用OLE DB API 编 写 的, 所 以 在SQL Server 7.0 的Transact-SQL 语 法 中, 可 以 支 持 异 种 数 据 库 的 查 询, 当 然, 这 些 异 种 数 据 库 必 须 也 提 供 相 应 的OLE DB 访 问 接 口。

OLE DB 标 准 中 定 义 的 新 概 念 ---- OLE DB 将 传 统 的 数 据 库 系 统 划 分 为 多 个 逻 辑 组 件, 这 些 组 件 之 间 相 对 独 立 又 相 互 通 信。 这 种 组 件 模 型 中 的 各 个 部 分 被 冠 以 不 同 的 名 称:
数 据 提 供 者(Data Provider)。 提 供 数 据 存 储 的 软 件 组 件, 小 到 普 通 的 文 本 文 件、 大 到 主 机 上 的 复 杂 数 据 库, 或 者 电 子 邮 件 存 储, 都 是 数 据 提 供 者 的 例 子。 有 的 文 档 把 这 些 软 件 组 件 的 开 发 商 也 称 为 数 据 提 供 者。
数 据 服 务 提 供 者(Data Service Provider)。 位 于 数 据 提 供 者 之 上、 从 过 去 的 数 据 库 管 理 系 统 中 分 离 出 来、 独 立 运 行 的 功 能 组 件, 例 如 查 询 处 理 器 和 游 标 引 擎(Cursor Engine), 这 些 组 件 使 得 数 据 提 供 者 提 供 的 数 据 以 表 状 数 据(Tabular Data) 的 形 式 向 外 表 示( 不 管 真 实 的 物 理 数 据 是 如 何 组 织 和 存 储 的), 并 实 现 数 据 的 查 询 和 修 改 功 能。SQL Server 7.0 的 查 询 处 理 程 序 就 是 这 种 组 件 的 典 型 例 子。
业 务 组 件(Business Component)。 利 用 数 据 服 务 提 供 者、 专 门 完 成 某 种 特 定 业 务 信 息 处 理、 可 以 重 用 的 功 能 组 件。 分 布 式 数 据 库 应 用 系 统 中 的 中 间 层(Middle-Tier) 就 是 这 种 组 件 的 典 型 例 子。
数 据 消 费 者(Data Consumer)。 任 何 需 要 访 问 数 据 的 系 统 程 序 或 应 用 程 序, 除 了 典 型 的 数 据 库 应 用 程 序 之 外, 还 包 括 需 要 访 问 各 种 数 据 源 的 开 发 工 具 或 语 言。
OLE DB 与ODBC 的 关 系 ---- 由 于OLE DB 和ODBC 标 准 都 是 为 了 提 供 统 一 的 访 问 数 据 接 口, 所 以 曾 经 有 人 疑 惑:OLE DB 是 不 是 替 代ODBC 的 新 标 准 ? 答 案 是 否 定 的。 实 际 上,ODBC 标 准 的 对 象 是 基 于SQL 的 数 据 源(SQL-Based Data Source), 而OLE DB 的 对 象 则 是 范 围 更 为 广 泛 的 任 何 数 据 存 储。 从 这 个 意 义 上 说, 符 合ODBC 标 准 的 数 据 源 是 符 合OLE DB 标 准 的 数 据 存 储 的 子 集。 符 合ODBC 标 准 的 数 据 源 要 符 合OLE DB 标 准, 还 必 须 提 供 相 应 的OLE DB 服 务 程 序(Service Provider), 就 像SQL Server 要 符 合ODBC 标 准, 必 须 提 供SQL Server ODBC 驱 动 程 序 一 样。 现 在, 微 软 自 己 已 经 为 所 有 的ODBC 数 据 源 提 供 了 一 个 统 一 的OLE DB 服 务 程 序, 叫 做ODBC OLE DB Provider。
---- ODBC OLE DB Provider 发 布 之 后, 有 人 又 担 心:ODBC Provider 是 不 是 在ODBC 之 上 的 新 的 层 次(Layer) ? 如 果 是, 那 么 使 用OLE DB 访 问ODBC 数 据 源 是 否 将 影 响 性 能 ? 答 案 也 是 否 定 的。 实 际 上,ODBC Provider 的 作 用, 是 替 换ODBC Driver Manager, 作 为 应 用 程 序 与ODBC 驱 动 程 序 之 间 的 桥 梁, 理 论 上 不 会 增 加 任 何 开 销。

ADO 的 概 念 ---- 我 们 已 经 知 道,OLE DB 标 准 的API 是C++ API, 只 能 供C++ 语 言 调 用( 这 也 是OLE DB 没 有 改 名 为ActiveX DB 的 原 因,ActiveX 是 与 语 言 无 关 的 组 件 技 术)。 为 了 使 得 流 行 的 各 种 编 程 语 言 都 可 以 编 写 符 合OLE DB 标 准 的 应 用 程 序, 微 软 在OLE DB API 之 上, 提 供 了 一 种 面 向 对 象、 与 语 言 无 关 的(Language-Neutral) 应 用 编 程 接 口, 这 就 是ActiveX Data Objects, 简 称ADO。
---- 与DAO、RDO 等 类 似,ADO 实 际 上 是 一 种 对 象 模 型, 不 过 这 个 对 象 模 型 相 对 简 单,
 

---- 在 这 个 对 象 模 型 中,Connection 类 似 于RDO 的rdoConnection 或 者DAO 的Database,Command 类 似 于RDO 的rdoPreparedStatement 或 者DAO 的QueryDef。

---- 值 得 注 意 的 是: 与DAO 等 模 型 的 层 次 结 构 不 同,ADO 基 本 上 是 一 种 平 板 结 构:Command 和Recordset 与Connect 之 间 并 没 有 上 下 层 次 关 系, 这 种 设 计 主 要 是 为 了 适 应Internet 应 用 开 发 的 需 要。 因 为 在Internet 上, 像 在 局 域 网 内 那 样 维 护 一 个 永 久 性 的 连 接、 然 后 在 连 接 的 基 础 上 执 行 查 询, 基 本 上 是 不 可 能 的。

ADO 与 其 他 编 程 接 口 的 比 较 ---- 网 络 数 据 库 应 用 程 序 的 开 发 可 以 使 用 的 编 程 接 口 包 括:DAO、ADO、RDO、ODBC API 和DB-Library 等,

---- 除 了 这 些 标 准 的 编 程 接 口 之 外, 还 有 一 些 应 用 程 序( 例 如MS Access) 也 可 以 作 为 访 问 远 程 数 据 库 的 编 程 工 具。 这 些 接 口 或 工 具 在 编 程 的 简 便 程 度 和 利 用 远 程 数 据 库 的 功 能 方 面 差 异 很 大

---- 可 以 看 出, 使 用MS Access( 通 过DAO/JET), 编 程 非 常 容 易, 但 是 因 为 把 远 程 网 络 数 据 库 当 成 本 地Access 数 据 库 对 待, 很 难 利 用 网 络 数 据 库 的 高 级 特 性; 而ODBC API 则 刚 好 相 反, 数 据 库 管 理 系 统 的 特 性 几 乎 可 以 完 全 利 用, 但 是 编 程 复 杂, 效 率 低。

---- 我 们 关 心 的ADO 在 编 程 难 易 程 度 方 面 比DAO 和RDO 都 好( 主 要 得 益 于 简 单 的 对 象 模 型), 但 是 在 利 用 数 据 库 的 特 性 方 面 与RDO 不 相 上 下; 至 于 程 序 运 行 效 率,ADO 当 前 的 版 本 是1.5, 性 能 方 面 与RDO 还 有 一 定 的 差 距, 当Visual Studio 6 发 布 时,ADO 将 升 级 到2.0 版, 新 版 本 在 功 能 和 性 能 方 面 都 将 与RDO 相 当 或 更 强。 因 此 对 于 应 用 开 发 人 员 来 说,ADO 是 一 种 非 常 有 前 途 的 编 程 接 口。

---- 实 际 上, 微 软 已 经 公 开 表 示, 今 后 的 微 软 产 品 在 数 据 访 问 的 接 口 方 面, 将 统 一 到OLE DB 和ADO 标 准 上 来。

ADO 编 程 实 例 ---- 对 于 习 惯 了 使 用DAO 或RDO 的 编 程 人 员 来 说,ADO 的 出 现 无 疑 会 有 一 定 的 冲 击, 因 为 新 的 对 象 模 型 总 是 需 要 一 个 学 习 的 过 程。 但 实 际 上, 对 于 最 常 用 的 数 据 库 访 问 操 作, 这 些 接 口 往 往 只 是 在 对 象 的 名 称、 属 性 和 方 法 上 略 有 不 同 而 已, 所 以 广 大 程 序 员 不 必 担 心。 下 面 举 例 说 明 应 用 方 法。
---- (1) 连 接/ 打 开 数 据 库

 使 用ADO:
    Dim CnADO As New ADODB.Connection
    Dim sConn As String
    sConn = "Driver={SQL Server};Server=MyServer"
    sConn = sConn & ";UID=sa;PWD=;Database=pubs"
    sConn = sConn & ";Network=DBMSSOCN;Address=MyServer,1433"
    CnADO.Open sConn

 使 用RDO:
    Dim Env As rdoEnvironment
    Dim CnRDO As rdoConnection
    Dim sConn As String
    Set Env = rdoEngine.rdoEnvironments(0)
    sConn = "Driver={SQL Server};Server=MyServer"
    sConn = sConn & ";UID=sa;PWD=;Database=pubs"
    sConn = sConn & ";Network=DBMSSOCN;Address=MyServer,1433"
    Set CnRDO = Env.OpenConnection("", , , sConn)

---- (2) 查 询 结 果 集

 使 用ADO:
    Dim Rs As ADODB.Recordset
    Set Rs = CnADO.Execute("select * from titles")

 使 用RDO:
    Dim Rs As rdoResultset
    Set Rs = CnRDO.OpenResultset("select * from titles")

---- 可 见, 两 种 方 法 几 乎 完 全 一 样, 而 且ADO 在 有 些 方 面 更 加 简 单( 例 如 创 建 数 据 库 连 接 时 不 用 先 指 定 一 个 上 层 对 象 —RDO 的rdoEnvironment)。




 
 
 


举报 回复(0) 喜欢(0)     评分
游客

返回顶部