当 今,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) 类 型
VB可将Sql结构化查询语句赋值Ado(ActiveX 数据对象)或ADO Data 控件,访问和 *** 作数据库。
ADO (ActiveX 数据对象),这项新的数据访问技术的特性包括:更简单的对象模型;与其它 Microsoft 和非 Microsoft 的技术更好的集成;为本地和远程数据数据提供的通用接口;可远程访问的和断开的记录集;用户可访问的数据绑定接口;以及层次结构的记录集。
ADO Data 控件, 这是一种新的、OLEDB 识别的数据源控件,其功能与内部的 Data 控件和 Remote Data 控件十分相似,通过这种方式允许用户用最少的代码来创建数据库应用程序。
Visual Basic 6.0 中,已经可以将任何 ADO/OLE DB 数据源绑定到任何 ADO/OLE DB 数据使用者上。在运行时,可以设置控件的 DataSource 属性来将控件动态地绑定到数据源。可以创建用作数据源和数据使用者的类,并且通过新的 BindingsCollection 对象将这些类绑定在一起。可以创建与 ADO 数据控件相似的、用作数据源的用户控件。还可以创建与 DataGrid 控件相似的、复杂绑定的用户控件。
以下是经ADO (ActiveX 数据对象)访问Access数据库的实例代码:
Dim cnn As New ConnectionDim rs As New Recordset
Dim sql As String
Dim ARR
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0Data Source=C:\wdOld.mdbPersist Security Info=False"
sql = "select 故障名称 from guzhang_bm"
rs.Open sql, cnn
Combo1.Text = "故障名称"
Do While Not rs.EOF
Combo1.AddItem rs("故障名称")
rs.MoveNext '打开表
Loop
rs.Close
cnn.Close
以下是使用ADO Data 控件访问Access数据库德实例代码:
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" & App.Path & "\wd.mdbPersist Security Info=False"Adodc1.RecordSource = "select * from jishijilu" ' where shijian like'%8112%' And gyh_riqi like'%10%'"
Adodc1.Refresh
Set MSHFlexGrid1.DataSource = Adodc1
MSHFlexGrid1.Row = 1
MSHFlexGrid1.ColSel = MSHFlexGrid1.Cols - 1
可以用ADODB,先定义Dim cnn
As
New
ADODB.Connection
Dim rs
As
New
ADODB.Recordset
这两个cnn用来连接数据库rs用来读取数据库中的值,然后用循环遍历rs将值ADD到listview里面
修改和保存可以做成同一个按钮保存就是遍历listview将数据UPDATE到数据库里面就行!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)