上一篇 | 下一篇

直接使用ODBC API访问数据库的VB程序

发布: 2008-6-26 09:27 | 作者: admin | 来源: | 查看: 19次

---- 开 放 数 据 库 互 连(ODBC) 已 经 成 为Client /Server 数 据 库 应 用 系 统 中 访 问 远 程 数 据 库 的 一 个 标 准。 做 为 强 大 的 前 端 开 发 工 具,MS Visual Basic 为 开 发 者 提 供 了 多 种 访 问ODBC 数 据 源 的 途 径, 如JET 数 据 库 引 擎、ODBC API 函 数、RDO 接 口 等。 比 较 而 言, 直 接 使 用ODBC API 函 数 的 编 程 难 度 最 大, 但 由 此 获 得 的 存 取 数 据 库 的 性 能 也 是 最 佳。 诚 然,VB 4.0 企 业 版 提 供 的RDO 接 口 的 性 能 已 经 接 近ODBC API, 但 是 遗 憾 的 是, 这 个 接 口 只 能 在32 位Windows 环 境 中 运 行, 而ODBC API 函 数 则 没 有 这 个 限 制。

---- ODBC API 函 数 的 声 明 方 法

---- 与 使 用 其 它 动 态 库 函 数 一 样, 在VB 中 使 用ODBC API 函 数 之 前, 必 须 事 先 声 明 将 要 使 用 的 函 数、 常 量 和 数 据 结 构。ODBC API 函 数 驻 留 在ODBC 运 行 动 态 库ODBC.DLL(16 位) 或ODBC32.DLL(32 位) 中, 该 动 态 库 位 于Windows 子 目 录system 中。 通 常 做 法 是 在VB 项 目 中 单 独 使 用 一 个 模 块 文 件, 然 后 将ODBC API 声 明 语 句 加 入 其 中, 如 下 所 示, 就 是 本 文 实 例 中 使 用 的 模 块 文 件module1.bas 的 内 容:

Declare Function SQLAllocEnv Lib "

odbc32.dll" (phenv&) As Integer

Declare Function SQLAllocConnect Lib "

odbc32.dll" (ByVal henv&, phdbc&) As Integer

Declare Function SQLAllocStmt Lib "

odbc32.dll" (ByVal hdbc&, phstmt&) As Integer

Declare Function SQLConnect Lib "

odbc32.dll" (ByVal hdbc&, ByVal szDSN$,

ByVal cbDSN%, ByVal szUID$, ByVal cbUID%,

ByVal szAuthStr$, ByVal cbAuthStr%) As Integer

Declare Function SQLColAttributesString Lib "

odbc32.dll" Alias "SQLColAttributes"

(ByVal hstmt&, ByVal icol%, ByVal fDescType%,

ByVal rgbDesc As String, ByVal cbDescMax%,

pcbDesc%, pfDesc&) As Integer

Declare Function SQLDisconnect Lib "

odbc32.dll" (ByVal hdbc&) As Integer

Declare Function SQLExecDirect Lib "

odbc32.dll" (ByVal hstmt&, ByVal

szSqlStr$, ByVal cbSqlStr&) As Integer

Declare Function SQLFetch Lib "

odbc32.dll" (ByVal hstmt&) As Integer

Declare Function SQLFreeConnect Lib "

odbc32.dll" (ByVal hdbc&) As Integer

Declare Function SQLFreeEnv Lib "

odbc32.dll" (ByVal henv&) As Integer

Declare Function SQLFreeStmt Lib "

odbc32.dll" (ByVal hstmt&, ByVal fOption%) As Integer

Declare Function SQLGetData Lib "

odbc32.dll" (ByVal hstmt&, ByVal icol%,

ByVal fCType%, ByVal rgbValue As String,

ByVal cbValueMax&, pcbValue&) As Integer

Declare Function SQLNumResultCols Lib "

odbc32.dll" (ByVal hstmt&, pccol%) As Integer

Global Const SQL_C_CHAR As Long = 1

Global Const SQL_COLUMN_LABEL As Long = 18

Global Const SQL_DROP As Long = 1

Global Const SQL_ERROR As Long = -1

Global Const SQL_NO_DATA_FOUND As Long = 100

Global Const SQL_SUCCESS As Long = 0

---- 需 要 说 明 的 是, 在 函 数 声 明 时, 应 该 根 据 程 序 的 运 行 环 境 选 择 相 应 的 动 态 库。 在VB 子 目 录samples\remauto\db_odbc 中 有 两 个 正 文 文 件ODBC16.TXT 和ODBC32.TXT, 分 别 存 有 所 有16 位 和32 位ODBC API 函 数、 常 量 和 数 据 结 构 的 声 明 语 句, 编 程 时 可 以 从 中 拷 贝 所 需 的 声 明 语 句。

---- 使 用ODBC API 的 编 程 方 法

---- 在VB 中 调 用ODBC API 函 数 访 问ODBC 数 据 库, 代 码 编 制 一 般 是 按 照 下 列 过 程 进 行 的:

---- 一、 初 始 化ODBC

---- 在 这 个 过 程 中, 应 用 程 序 将 通 过 调 用SQLAlloEnv 函 数 初 始 化ODBC 接 口, 获 取ODBC 环 境 句 柄。ODBC 环 境 句 柄 是 其 它 所 有ODBC 资 源 句 柄 的 父 句 柄, 因 此 无 论 程 序 将 建 立 多 少 个ODBC 连 接, 这 个 过 程 只 需 执 行 一 次 即 可。 例 如:

字号: | 推荐给好友

31/3123>

评分:0

我来说两句