2022年ADO数据库 .pdf





《2022年ADO数据库 .pdf》由会员分享,可在线阅读,更多相关《2022年ADO数据库 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一 、 ADO简 介ADO(ActiveX Data Object)是 Microsoft数 据 库 应 用 程 序 开 发 的 新 接 口 , 是 建 立在 OLE DB之 上 的 高 层 数 据 库 访 问 技 术 , 请 不 必 为 此 担 心 , 即 使 你 对 OLE DB ,COM 不 了 解 也 能 轻 松 对 付 ADO, 因 为 它 非 常 简 单 易 用 , 甚 至 比 你 以 往 所 接 触 的ODBC API 、 DAO 、 RDO 都 要 容 易 使 用 ,并 不 失 灵 活 性 。本 文 将 详 细 地 介 绍 在 VC下 如 何 使 用 ADO 来 进 行 数 据
2、 库 应 用 程 序 开 发 , 并 给 出 示 例 代 码 。本 文 示 例 代 码二 、 基 本 流 程万 事 开 头 难 ,任 何 一 种 新 技 术 对 于 初 学 者 来 说 最 重 要 的 还 是 “ 入 门 ” , 掌 握 其 要 点 。让 我 们 来 看 看 ADO 数 据 库 开 发 的 基 本 流 程 吧 !(1) 初 始 化 COM 库 , 引 入 ADO 库 定 义 文 件(2) 用 Connection对 象 连 接 数 据 库(3) 利 用 建 立 好 的 连 接 , 通 过 Connection、 Command对 象 执 行 SQL 命 令 , 或 利用 Rec
3、ordset对 象 取 得 结 果 记 录 集 进 行 查 询 、 处 理 。(4) 使 用 完 毕 后 关 闭 连 接 释 放 对 象 。准 备 工 作 : 为 了 大 家 都 能 测 试 本 文 提 供 的 例 子 , 我 们 采 用 Access数 据 库 , 您 也 可 以 直 接 在我 们 提 供 的 示 例 代 码 中 找 到 这 个 test.mdb。下 面 我 们 将 详 细 介 绍 上 述 步 骤 并 给 出 相 关 代 码 。【 1】 COM库 的 初 始 化我 们 可 以 使 用 AfxOleInit()来 初 始 化 COM 库 , 这 项 工 作 通 常 在CWinA
4、pp:InitInstance()的 重 载 函 数 中 完 成 , 请 看 如 下 代 码 : BOOL CADOTest1App:InitInstance() AfxOleInit(); . 【 2】 用 #import指 令 引 入 ADO类 型 库我 们 在 stdafx.h中 加 入 如 下 语 句 : (stdafx.h这 个 文 件 哪 里 可 以 找 到 ?你 可 以 在FileView中 的 Header Files里 找 到 ) #import c:program filescommon filessystemadomsado15.dll no_namespace rena
5、me(EOF,adoEOF) 这 一 语 句 有 何 作 用 呢 ? 其 最 终 作 用 同 我 们 熟 悉 的 #include类 似 ,编 译 的 时 候 系 统会 为 我 们 生 成 msado15.tlh,ado15.tli两 个 C+ 头 文 件 来 定 义 ADO 库 。几 点 说 明 : 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - (1) 您 的 环 境 中 msado15.dll不 一 定 在 这 个 目 录
6、 下 , 请 按 实 际 情 况 修 改(2) 在 编 译 的 时 候 肯 能 会 出 现 如 下 警 告 ,对 此 微 软 在 MSDN 中 作 了 说 明 ,并 建 议我 们 不 要 理 会 这 个 警 告 。msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned 【 3】 创 建 Connection对 象 并 连 接 数 据 库首 先 我 们 需 要 添 加 一 个 指 向 Connection对 象 的 指 针 : _Connectio
7、nPtr m_pConnection; 下 面 的 代 码 演 示 了 如 何 创 建 Connection对 象 实 例 及 如 何 连 接 数 据 库 并 进 行 异 常捕 捉 。BOOL CADOTest1Dlg:OnInitDialog() CDialog:OnInitDialog(); HRESULT hr; try hr = m_pConnection.CreateInstance(ADODB.Connection);/创建 Connection对象 if(SUCCEEDED(hr) hr = m_pConnection-Open(Provider=Microsoft.Jet.OL
8、EDB.4.0;Data Source=test.mdb,adModeUnknown);/连接 数据 库 /上 面一 句中 连接字 串中 的 Provider是针 对 ACCESS2000环境 的,对于 ACCESS97,需要 改为 :Provider=Microsoft.Jet.OLEDB.3.51; catch(_com_error e)/捕 捉异 常 CString errormessage; errormessage.Format(连 接数 据库 失败 !rn错 误信息 :%s,e.ErrorMessage(); AfxMessageBox(errormessage);/显示错 误信
9、息 在 这 段 代 码 中 我 们 是 通 过 Connection对 象 的 Open方 法 来 进 行 连 接 数 据 库 的 ,下 面 是 该 方 法 的 原 型名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - HRESULT Connection15:Open ( _bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options ) Conne
10、ctionString为 连 接 字 串 ,UserID是 用 户 名 , Password是 登 陆 密 码 ,Options是 连 接 选 项 ,用 于 指 定 Connection对 象 对 数 据 的 更 新 许 可 权 , Options可 以 是 如 下 几 个 常 量 : adModeUnknown:缺 省 。 当 前 的 许 可 权 未 设 置adModeRead:只 读adModeWrite:只 写adModeReadWrite:可 以 读 写adModeShareDenyRead:阻 止 其 它 Connection对 象 以 读 权 限 打 开 连 接adModeShar
11、eDenyWrite:阻 止 其 它 Connection对 象 以 写 权 限 打 开 连 接adModeShareExclusive:阻 止 其 它 Connection对 象 打 开 连 接adModeShareDenyNone:允 许 其 它 程 序 或 对 象 以 任 何 权 限 建 立 连 接我 们 给 出 一 些 常 用 的 连 接 方 式 供 大 家 参 考 : (1) 通 过 JET 数 据 库 引 擎 对 ACCESS2000数 据 库 的 连 接m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
12、C:test.mdb,adModeUnknown); (2) 通 过 DSN 数 据 源 对 任 何 支 持 ODBC 的 数 据 库 进 行 连 接 : m_pConnection-Open(Data Source=adotest;UID=sa;PWD=;,adModeUnknown);(3) 不 通 过 DSN 对 SQL SERVER数 据 库 进 行 连 接 :m_pConnection-Open(driver=SQL Server;Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139,adModeUnknown); 其 中 Server是
13、SQL 服 务 器 的 名 称 , DATABASE是 库 的 名 称Connection对 象 除 Open方 法 外 还 有 许 多 方 法 , 我 们 先 介 绍 Connection对 象 中两 个 有 用 的 属 性 ConnectionTimeOut与 State ConnectionTimeOut用 来 设 置 连 接 的 超 时 时 间 , 需 要 在 Open之 前 调 用 , 例 如 : m_pConnection-ConnectionTimeout = 5;/设置 超时 时间 为 5 秒m_pConnection-Open(Data Source=adotest;,adM
14、odeUnknown); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - State属 性 指 明 当 前 Connection对 象 的 状 态 , 0 表 示 关 闭 , 1 表 示 已 经 打 开 , 我们 可 以 通 过 读 取 这 个 属 性 来 作 相 应 的 处 理 , 例 如 : if(m_pConnection-State) m_pConnection-Close(); /如 果已 经打 开了 连接 则 关闭
15、它【 4】 执 行 SQL 命 令 并 取 得 结 果 记 录 集为 了 取 得 结 果 记 录 集 , 我 们 定 义 一 个 指 向 Recordset对 象 的 指 针 :_RecordsetPtr m_pRecordset; 并 为 其 创 建 Recordset对 象 的 实 例 : m_pRecordset.CreateInstance(ADODB.Recordset);SQL 命 令 的 执 行 可 以 采 用 多 种 形 式 , 下 面 我 们 一 进 行 阐 述 。(1) 利 用 Connection对 象 的 Execute方 法 执 行 SQL 命 令Execute方 法
16、 的 原 型 如 下 所 示 : _RecordsetPtr Connection15:Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options ) 其 中 CommandText是 命 令 字 串 , 通 常 是 SQL命 令 。 参 数 RecordsAffected是 操 作 完 成 后 所 影 响 的 行 数 , 参 数 Options表 示CommandText中 内 容 的 类 型 , Options可 以 取 如 下 值 之 一 :adCmdText:表 明 CommandText是 文 本 命
17、令adCmdTable:表 明 CommandText是 一 个 表 名adCmdProc:表 明 CommandText是 一 个 存 储 过 程adCmdUnknown:未 知Execute执 行 完 后 返 回 一 个 指 向 记 录 集 的 指 针 , 下 面 我 们 给 出 具 体 代 码 并 作 说 明 。 _variant_t RecordsAffected; /执 行 SQL命 令:CREATE TABLE创建表 格 users,users包含 四个 字段 : 整形 ID, 字 符串 username, 整 形 old,日期 型 birthday m_pConnection-E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年ADO数据库 2022 ADO 数据库

限制150内