中华网通行证
用户名 密码
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 手机上网 桌面壁纸 科技商情  

VB访问数据库的方法与原则
吉林白山 李国海 李建海 2000-10-25 10:25:03

  1. VB访问数据库的原则
总则:具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案
* 代码的重用和运行的效率
例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO
* 实现的简便性,易维护性
  如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要 访问ISAM 或Jet 类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易
* 安全性原则
报这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网因而可直接利用数据控件如DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。

  2. VB访问数据库的方法
VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。下面以列表的方式列出每一类,及每一类包含的方法。
表(一)接口对象法(API)
接 口 界 面
访 问 对 象
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 位
表(二)数据控件法
数 据 绑 定 控 件
访 问 对 象
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 位
数 据 访 问 接 口功 能 及 含 义:
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 机 制 有 自 己 的 查 询 和 结 果 集 处 理 功 能, 并 可 对 同 种 或 异 种 数 据 源 作 查 询 处 理。
0DBC:开 放 式 的 数 据 库 连 接(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 快 而 且 轻 但 不 支 持 对 象 界 面。
---- 使 用 RDO 的 一 般 方 法 如 下。
---- 先 声 明 变 量:
Public con As rdoConnection, res As rdoResultset
---- 然 后 初 始 化 rdoEngine, 设 置 用 户 和 口 令 等 缺 省 参 数;With rdoEngine
.rdoDefaultUser = "sa" ‘用户为 sa
.rdoDefaultPassword = "pass" ‘口令为 pass
.rdoDefaultCursorDriver = rdUseServer
.rdoDefaultLoginTimeout = 15
End With
---- 再 连 接 到 要 访 问 的 远 程 数 据 库( 可 使 用 DSN Connection 和 DSN-Less Connection)。
---- 使 用 DSN Connection 举 例( 连 接 服 务 器 SERVER 上 的 数 据 库 hotel):
Set con = rdoEnvironments(0).OpenConnection
("hotel", rdDriverNoPrompt, False)
---- 使 用 DSN-Less Connection 举 例( 连 接 服 务 器 SERVER 上 的 数 据 库 hotel):
Set con = rdoEnvironments(0).OpenConnection
("", rdDriverNoPrompt, False, _"driver={SQL Server};server=SERVER; database=hotel")
---- 建 立 连 接 后, 既 可 使 用 OpenResultset 方 法 执 行 查 询 并 处 理 结 果 集, 又 可 使 用 Execute 方 法 执 行 包 括 数 据 定 义 和 数 据 操 作 在 内 的 动 作 查 询。 例 如:
Set res = con.OpenResultset("SELECT * FROM menu", rdOpenStatic)
con.Execute "CREATE VIEW menu_view AS SELECT 代码,菜名FROM menu", rdExecDirect
---- RDO 最 强 大 和 最 重 要 的 特 性 之 一 是: 它 可 以 查 询 和 处 理 由 存 储 过 程 返 回 的 结 果, 无 论 它 有 多 么 复 杂。
---- 除 RDO 外, 还 可 使 用 RDC 访 问 远 程 数 据 库。
---- 远 程 数 据 控 件(RDC) 与 数 据 控 件(DC) 类 似, 不 同 之 处 是 RDC 使 用 RDO 连 接 到 ODBC 驱 动 程 序 管 理 器, 而 DC 则 使 用 DAO 连 接 到 Jet 数 据 库 引 擎。 利 用 RDO 和 RDC, 无 需 使 用 Jet 引 擎 就 可 以 访 问 ODBC 数 据 源。 这 样, 在 访 问 远 程 数 据 库 时, 可 以 获 得 更 好 的 性 能 和 更 大 的 灵 活 性。
----远 程 数 据 控 件 MSRDC 使 用 举 例 如 下。
Connect: driver={SQL Server}; server=SERVER; database=hotel
DataSourceName:
SQL: SELECT * FROM menu
UserName: sa
Password: pass
CursorDriver: 3-rdUseClient
---- 可 以 使 用 RDC 执 行 许 多 简 单 的 远 程 数 据 访 问 操 作, 不 需 编 写 任 何 代 码, 只 要 填 写 有 关 项 就 可 以 了, 使 用 起 来 很 方 便。 但 应 注 意, 除 非 在 设 计 时 禁 止 并 只 在 需 要 时 启 动 RDC , 否 则 它 至 少 将 消 耗 一 个 远 程 数 据 库 连 接。 在 远 程 数 据 库 连 接 资 源 有 限 或 要 求 很 高 效 的 情 况 下, 宜 慎 用、 少 用 RDC 。 这 种 情 况 下, 应 尽 可 能 考 虑 使 用 RDO , 并 使 用 存 储 过 程( 预 编 译 好 的 SQL 语 句)。
---- 最 后 还 应 注 意, 只 有 32 位 操 作 系统( 如 Windows NT 或 Windows 95), 才 能 支 持 RDO 和RDC 。RDO 和 RDC 也 只 能 用 于 访 问 32 位 ODBC 数 据 源。

软件世界杂志社
相关报道




本站检索



中华网推荐

·国家级治脑病新药思维源
·中藏药治疗脑病新突破
·治类风湿,强直性脊柱炎
·养肾·痛风·长寿
·肝病泌尿脑萎缩新药介绍
·强直性脊柱炎康复乐园
·让中医辩证不孕不育
·国医治股骨头坏死一绝
·乙肝为何久治不愈?
·二千元垄断批发做老板
·中医中药专治前列腺
·治牛皮癣白癜风已成现实
·专治痛风病的白衣天使
·不孕不育的杏林奇葩
·专卖店零售管理系统





   

网络教室编辑信箱