首页 VC_中数据库访问技术研究

VC_中数据库访问技术研究

举报
开通vip

VC_中数据库访问技术研究VC_中数据库访问技术研究 文章编号:1008- 0570(2006)04- 3- 0256- 03 VC ++ 中数据库访问技术研究 Re s e a rch o n Acce s s in g Te ch n o lo g y o f Da ta b a s e in VC++ ( 衡阳师范学院) 王 樱 徐雨明 , , Wa ng Ying Xu Yum ing 摘要: 结 合 VC++ 讨 论 并 比 较 了 当 前 流 行 的 几 种 数 据 库 访 问 技 术 : ODBC, DAO, OLE/...

VC_中数据库访问技术研究
VC_中数据库访问技术研究 文章编号:1008- 0570(2006)04- 3- 0256- 03 VC ++ 中数据库访问技术研究 Re s e a rch o n Acce s s in g Te ch n o lo g y o f Da ta b a s e in VC++ ( 衡阳师范学院) 王 樱 徐雨明 , , Wa ng Ying Xu Yum ing 摘要: 结 合 VC++ 讨 论 并 比 较 了 当 前 流 行 的 几 种 数 据 库 访 问 技 术 : ODBC, DAO, OLE/DB 和 ADO。 在 简 要 叙 述 其 原 理 后 , 说 明 了 三 种 数 据 库 访 问 技 术 各 自 的 优 缺 点 , 并 给 出 了 基 本 使 用 方 法 。 关键词: 数据库访问; ODBC ; DAO ; OLE/DB; ADO ; 中图分类号: TP311 文献标识码: A Abstr act: Combining with VC++ , this article discusses and compares several kinds of database access techniques that are popular at nowadays such as ODBC,DAO,OLE/DB and ADO,after depicting briefly their principles, it explains their merits and shortconings of every kinds of these techniques,gives their basic use methods. Key wor ds:database accessing;ODBC;DAO;OLE/DB;ADO; 库应用程序遵循一定的基本步骤: 引言 AccessOD BC Access 笔者最近将用 VC++开发一个管理系统, 要使用 %& "#$"#!! 数据库对所需的数据进行存储与管理。VC++提供了几 ODBC "#! ODBC !"#$种接口( DAO、OLE/DB、ADO、ODBC) 来支持 数据库编 "#$! ODBC32.DLL程, 利用这些接口, 可以在程序中直接操作各种各样 SQL ServerOD BC SQL Server % #$&#""!!的 数 据 库 , 如 SQL Server、Microsoft Access、Microsoft FoxPro 等等。 图 1 ODBC 访问多种数据库 采用以上几种接口访问数据库各有千秋, 所以在 第一步是分配 ODBC 环境, 使一些内部结构初始 进行数据库编程前, 有必要对 VC++中提供的各种技 化。完成这一步, 须分配一个 SQLHENV 类型的变量在 术有所了解, 从而进行数据库技术的选定。ODBC 环境中做句柄使用。 第二步是为将要使用的每 一个数据源 分配一个1 开放数据库连接( ODBC ) 连接句柄, 由函数 SQLALLocHandle()完成。 1.1 ODBC API 第三步是使用 SQLConnect()把连接句柄与数据库 ODBC ( Open Database Connectivity) 其 实 是 Mi- 连接, 可以先通过 SQLSetConnectAttr()设置连接属性。 crosoft 的 WOSA( Windows 开放服务体系) 中有关数据 然后就可以进行 SQL 语句的操作。操作完成后,库的一个组成部分, 它建立了一组规范, 并提供了一 组对数据库访问的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 API( 应用程序编接口) 。通常 用户取回相应的结果, 就可以取消与数据库的连接,ODBC 主要由 ODBC 驱动程序 管理器、ODBC 数据 库 最后需要释放 ODBC 环境。驱 动 程 序 、ODBC 数 据 源 和 ODBC 应 用 四 部 分 组 成 。 1.2 MFC ODBC ODBC 体系的特点是: 通过统一的接口实现对 DBMS 虽然 ODBC 提供了访问数据库的接口, 但是直接 的访问, 使用不同的 ODBC 驱动程序可以保证数据库 使用 ODBC API 创建应用程序需要编制大量的代码, 的独立性。例如用 ODBC 访问 Access 和 SQL Server 数 而 MFC ODBC 数据库类将 ODBC API 函数进 行了封 装, 这就大大简化了 ODBC 数据库开发的编程工作。 MFC ODBC 实际上使用的是一个简化的编程模型,据库, ODBC 应用程序调用数据源的代码, 不需改变 因此, 程序员无须考虑底层的很多细节, 只需以简单 就可避免仅需改变 ODBC 中数据源的配置。这样, 易用的 CDatabase、CRecordset、CRecordView 等类来实 ODBC 应用程序直接与数据源打交道。如图 1 所示。 现 ODBC 的 功 能 。 利 用 MFC ODBC 开 发 就 是 利 用 在使用 ODBC API 时, 用户须引入的头文件为" MFC ODBC 数据库类来操纵 ODBC 数据源。在 Visualsql.h" , "sqlext.h" , "sqltypes.h" 。用 ODBC API 创建数C++中有两个常用于访问 ODBC 数据的 MFC 类, 它们 据 是 CDatabase 类和 CRecordset 类。CDatabase 类表示一 王樱: 硕士 讲师 个 同 数 据 源 的 连 接 , ODBC 数 据 源 的 基 础 。 是 操 作 基金资助: 湖南省教育厅科研项目( 04c142) 您的论文得到两院院士关注 数 据 库 数 据 仓 库 数 据 挖 掘CRecordset 类代表从数据源中选择一 组记录的集 合, 在文档类的 OnOpenDocument()函数中加入 m_pdb=newCDaoDatabase; 它是操作数据源的工具。CRecordset 类提供了应用程 m_pdb?open();序与数据交互的实质。CRecordset 类用来封装对数据 库的查询, 包括添加、修改、删除行。m_pset=newMyDaoRcordset(m_pdb); m_pset?open()要 注 意 的 是 在 应 用 程 序 中 , 一 般 不 直 接 使 用 CRecordset 类, 而是使用其派生类。如果你没有自己的 最 后 创 建 自 己 的 对 话 框 , 选 择 ClassWizard 的 派生类, 就几乎不可能使用 CRecordset 类对象。因为 ClassInfo 页, 在 ForeignClass 项填入先前所创建的 My- CRecordset类为你派生出的类提供了一个框架, 当使 DaoRcordset, 在 ForeignVariable 项填入 m_pset, 并对各 用 MFC Class Wizard 产 生 一 个 CRecordset 类 的 派 生 个 edit 栏用变量映射。 类时, MFC Class Wizard 会自动添加相应数据库表中 字段的成员变量, 并自动重载 CRecordset 类的成员函 在没有安装 office、Visual studio 等软件的系统中,数 DoFieldExchange(), 通过使用 RFX 函数来完成数据 会提示“无法对 DAO/JETDB 引擎进行初始化”的错 库字段与记录集字段数据成员变量的数据交换。生成 误 , 程 序 根 本 无 法 使 用 。 原 因 在 于 操 作 系 统(Win- 派生类的步骤如下: dows9x/NT/2000/XP)中没有对 DAO 注册。 (1) 通过添加类向导从 CRecordset 类派生类。 3 对 象 链 接 和 嵌 入 式 数 据 库 ( OLE / (2) 指定记录集的字段数据成员。 (3) 在向导生成的字段数据成员后面添加参数数 DB ) 与活动数据对象( ADO ) 据成员, 一般添加后缀“param”。 3.1 OLE/DB (4) 修改.cpp 文件中的成员函数定义, 为已经添加 OLE/DB ( Object Linked and Embedded Database) 到类中的每一个参数数据成员添加 RFX 函数调用。是基于 COM 接口的访问数据库的新技术, 它提供了 (5) 在派生类的构造函数中增加参数 m_nParams对包括关系数据库和非关系数据库在内的所有文件 系统的统一接口。OLE/DB 属于数据库访问技术中的 的计数。 底层接口, 为了在 Visual C++中使用 OLE/DB, 用户必 当然在程序中使用 MFC ODBC, 除登录数据源之 须熟悉 C++模板类、COM 技术和 OLE/DB 接口, 这种 外, 还需要在 stdafx.h 中包含 afxdb.h。 要求对一般用户而言有点苛刻。 2 数据访问对象( DAO ) 3.2 ADO ADO( Active Data Object) 技术是基于 OLE/DB 的 2.1 DAO 访问接口, 它对 OLE/DB 的接口作了封装, 定义了 A- DO 对象, 属于数据库访问的高层接口。ADO 和 OLE/ DAO ( Data Access Object) 基 于 Microsoft Jet DB 的 关 系 类 似 于 MFC ODBC 与 ODBC API 的 关 数据库引擎, 通过数据存取对象来操纵数据库, 它提 系, 它在继承 OLE/DB 优点的同时大大简化了 OLE/ 供使用 Microsoft Jet 数据库引擎的层次来访问数据 DB 的操作。 库, 使用户通过代码来创建和操作数据库。DAO 的前 与微软的其它数据访问模型相比, ADO 对象模型身就是 ODBC。DAO 由一个分级的对象集合组成, 这 非常精炼, 仅由三个主要对象 Connection、Command、 些 DAO 对象协同工作形成 DAO 结构体系。 Recordset 和几个辅助对象组成。Connection 对象提供 2.2 MFC DAO OLE/DB 数据源和对话对象之间的关联, 它通过用户 在 Visual C++4.0 之后, Visual C++提供了对 DAO 的 名称和口令来处理用户身份的鉴别, 并提供事务处理 封装, 程序员可以使用 Visual C++提供的 MFC DAO 的支持, 还提供执行方法, 从而简化数据源的连接和 数据检索的进程; Command 对象封装了数据源可以解 类 方 便 地 访 问 数 据 库 。 如 : CDaoWorkspace、CDaoR- 释的命令, 该命令可以是 SQL 命令、存储过程或底层 cordset、CdaoRcordView 是常用的三个类, 这些类密切 数据源可以理解的任何内容; Recordset 用于表示从数 对应于 DAO 对象, 功能也与 ODBC 中相对应的类的 据源中返回的表格数据, 它封装了记录集合的导航、 功能基本相同。使用 AppWizard 的过程基本上与使用 记录更新、记录删除和新记录的添加等方法, 还提供 ODBC 时相类似, 只是在选择数据源时要选择已建立 了批量更新记录的能力。 在 VC++应用程序中使用 ADO 的方法如下: 好的 DAO 数据源, 在后从系统中选出源数据库和表, 令 其 自 动 生 成 这 部 分 的 代 码 。 在 应 用 程 序 中 使 用首先引入 ADO 动态链接库: VC++中通过在程序中使 MFC DAO 可以通过以下步骤来实现: 用预编译指令 #import 来告诉编译器将此指令中指定 首先应确保在 stdafx.h 头 文 件 中 包 含 了 afxdao.h 的动态链接库引入 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 中, 并从动态链接库取出其中 头文件: 的对象信息, 产生 msado15.tlh 和 ado15.tli 两个头文件 #include"afxdao.h" 接着创建自己的 CDaoRcordset 类( 设为 MyDaoR- cordset) , 并使它与你所需要的数据库的表相连。同时 来定义 ADO 库。例如: 能, 而且 ADO 适用的数据源的范围要大得多, 同时它 #import"c:\program files\common 还允许进行批更新, 这样就大大减轻了网络负担, 提 files\system\a- do\msado15.dll"\no_namespace 高数据库处理效率。由于 ADO 缺乏大量的第三方厂 其次定义链接对象与初始 化 OLE/COM 库环境: 商的支持, 使得 ADO 目前的远不如 ODBC 普及, 但其 在 MFC 中 只 要 用 一 条 语 句 就 可 以 自 动 实 现 初 始 化面 向 对 象 的 特 性 将 使 ADO 具 有 比 较 广 阔 的 发 展 前 COM 和结束时关闭 COM 的操作。景。 AfxOleInit(); 5 结束语 接着就可以直接使用 ADO 了。考 虑 到 Microsoft Access 2000 的 功 能 以 及 VC++ 访问 Access 数据库的便利, 笔者选用 Access 2000 来 各种数据库访问技术的比较4 构建软件的数据库。同时笔者所开发的管理系统对数 据库性能的要求不高, 数据库中的数据量也不大, 操 只 要 登 录ODBC 的 优 点 是 它 的 使 用 比 较 简 单 , 作上主要以查询数据为主, 数据库的操作速度也不必 Windows 控制面板中的“数据源”, 就可以使 ODBC 链 着重考虑, 在数据库访问技术的选择主要考虑技术上 接到相应的数据库。而且 ODBC 出现得比较早, 几乎 易于掌握和实现。所以笔者最终选择了 MFC OBDC 和 Visual C++的数据控件。 支持所有的关系型数据库, 如 SQL Server、Access、Ora- 参考文献:cle 等。它可以通过 MFC 或 API 使应用程序独立于源 [1]方莉等, MFC ODBC 数据存取技术[J], 上海电力学院学报,数据库管理系统, 所以应用广泛。但是使用 ODBC 访 2002(3).67 问数据库速度较慢, 同时 ODBC 的使用需要很多相应 [2]刘艳丽等, 利用 DAO 实现 Visual C++对数据库的访问[J], 信 的部件支持, 这使得当从一个系统移植到另一个系统阳师范学院学报(自然科学版), 2000(1).71 时, 不但要重新注册数据源, 而且要移动很多部件。[3]苏岳龙,李贻斌,宋锐, 基于 VC++ 6.0 的高速串口通信数据采 DAO 克服了 ODBC 的一些缺陷。由于它实际上是集系统[J]微计算机信息,2005,5:147-149 作者简介: 王樱.女 讲师 1971 年 10 月,土家族,在读硕 所以通过 Microsoft Jet 数据库引擎来访问数据库, DAO 方法非常适合访问 Jet 型数据库( .MDB) , 同时使 士. 现在在衡阳师范学院计算机系从事计算机理论教 学工作, E- mail: wmangying@163.com。 用 DAO 方法不需要登录数据源, 只要指明数据库的 Author br ief intr oduction:Wang, Ying, female, lectur- 路径即可。DAO 技术的功能很强大, 它支持数据库的 er, Master; Tujia Nationality, Computer- theory teaching, DML 和 DDL, 通过 DAO 可访问从 txt 文件直到后台大 E- mail: wmangying@163.com 型数据库的多种数据格式。但是 DAO 也存在较大的 ( 421008 湖南衡阳师范学院计算机系) 王 樱 徐雨明 缺点: 主要是 MFC DAO 与 Jet 数据库引擎之间的版 (Depar tment of Computer Science, Hengyang Nor - 本问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 , 如表 1 所示。虽然微软声称 DAO 也可以访问 非 Microsoft 产品建立的数据库, 但实际使用时会遇到 很多问题 ( 主要是兼容问题) 。另外由于 Visual C++. mal Univer sity, Hengyang Hunan 421008 China) NET 环 境 和 向 导 不 再 支 持 DAO ( 虽 然 仍 包 含 DAO Wang, Ying Xu , Yuming 类) , 用户必须手工编写过去由向导执行的任务, Mi- (投稿日期:2005.7.6) (修稿日期:2005.7.16) crosoft 建议新项目采用 OLE/DB 模板或 ODBC。 (接 13 页)参考文献: 表 支持的 数据库引擎版本1 Visual C++Jet [1]D.Johnson,C.Perkins."Mobile Support in IPv6".rfc3775.June Visual C++ DAO Jet 引擎 Office [2]J. Loughney M. Nakhjiri, C. Perkins, and R. Koodli, "Context Transfer Protocol", Internet Draft. August 2004. 4.x 3.0 3.0 95 钟旭陆浪如南相浩洪泽勤一种基于种子密钥 的 [3],,,. SPK IBE5.0 3.5 3.5 97 加密体制 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 方案微计算机信息 [J],, 2005,4:226- 228.6.0 3.51 3.51 97 作者简介: 周贤伟, 男, 1963.6 出生, 汉, 博士后, 主要.NET 3.6 4.0 2000 研究方向为通信网安全,宽带移动通信和组播安全等; 冯晓莹, 女, 1981.2 出生, 汉, 在读硕士研究生, 主要研 足以提供一种访OLE/DB 提供的接口相当通用, 究方向为移动 IPv6 及移动 IPv6 安全。Email: fengxi- 问数据库的统一手段, 而不需要考虑数据存储类型。 aoying@sohu.com; 杨 军 , 男 , 1963.12 出 生 , 汉 , 涪 陵 师 OLE/DB 通过把数据库功能分为客户和提供者两个方 范学院副教授, 在读博士研究生, 主要研究方向为应 面, 从而提高了两者的效率。OLE/DB 技术允许访问各 用密码学,组播安全和组密钥管理。种数据源, 速度和效率均优于前两者, 但是 OLE/DB 属 于底层接口, 技术比较复杂, 要掌握这一技术有相当 的难度。所以在基于 COM 技术的数据库访问中, 通常 北京科技大学) 周贤伟 冯晓莹 杨 军 100083 ( 使 用 ADO 技 术 而 不 是 OLE/DB。 使 用 ADO 与 使 用 通讯地址: (100083 北京科技大学信息工程学院通信 ODBC 几乎一样方便, ADO 不仅具有 ODBC 的主要功 工程系) 周贤伟 (投稿日期:2005.8.16) (修稿日期:2005.9.26)
本文档为【VC_中数据库访问技术研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_531654
暂无简介~
格式:doc
大小:30KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-10-16
浏览量:11