


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Access ODBC Access!#$%&!#ODBC !#ODBC !#$!#$ODBC32.DLLSQL Server ODBC SQL Server!#$%&!#文章编号:1008- 0570(2006)04- 3- 0256- 03VC + 中数据库访问技术研究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文献标识码: AAbstr act: Combining with VC+ , this article discusses and compares several kinds of database access techniques that are popular atnowadays 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;库应用程序遵循一定的基本步骤:引言笔者最近将用 VC+开发一个管理系统, 要使用 数据库对所需的数据进行存储与管理。VC+提供了几 种接口( DAO、OLE/DB、ADO、ODBC) 来支持 数据库编 程, 利用这些接口, 可以在程序中直接操作各种各样 的 数 据 库 , 如 SQL Server、Microsoft Access、Microsoft FoxPro 等等。采用以上几种接口访问数据库各有千秋, 所以在 进行数据库编程前, 有必要对 VC+中提供的各种技术有所了解, 从而进行数据库技术的选定。1 开放数据库连接( ODBC )1.1 ODBC APIODBC ( Open Database Connectivity) 其 实 是 Mi- crosoft 的 WOSA( Windows 开放服务体系) 中有关数据 库的一个组成部分, 它建立了一组规范, 并提供了一组对数据库访问的标准 API( 应用程序编接口) 。通常 ODBC 主要由 ODBC 驱动程序 管理器、ODBC 数据 库 驱 动 程 序 、ODBC 数 据 源 和 ODBC 应 用 四 部 分 组 成 。 ODBC 体系的特点是: 通过统一的接口实现对 DBMS 的访问, 使用不同的 ODBC 驱动程序可以保证数据库 的独立性。例如用 ODBC 访问 Access 和 SQL Server 数图 1 ODBC 访问多种数据库第一步是分配 ODBC 环境, 使一些内部结构初始 化。完成这一步, 须分配一个 SQLHENV 类型的变量在 ODBC 环境中做句柄使用。第二步是为将要使用的每 一个数据源 分配一个连接句柄, 由函数 SQLALLocHandle()完成。第三步是使用 SQLConnect()把连接句柄与数据库 连接, 可以先通过 SQLSetConnectAttr()设置连接属性。然后就可以进行 SQL 语句的操作。操作完成后,用户取回相应的结果, 就可以取消与数据库的连接,最后需要释放 ODBC 环境。1.2 MFC ODBC虽然 ODBC 提供了访问数据库的接口, 但是直接 使用 ODBC API 创建应用程序需要编制大量的代码, 而 MFC ODBC 数据库类将 ODBC API 函数进 行了封装, 这就大大简化了 ODBC 数据库开发的编程工作。MFC ODBC 实际上使用的是一个简化的编程模型,因此, 程序员无须考虑底层的很多细节, 只需以简单 易用的 CDatabase、CRecordset、CRecordView 等类来实现 ODBC 的 功 能 。 利 用 MFC ODBC 开 发 就 是 利 用MFC ODBC 数据库类来操纵 ODBC 数据源。在 VisualC+中有两个常用于访问 ODBC 数据的 MFC 类, 它们 是 CDatabase 类和 CRecordset 类。CDatabase 类表示一据库,不需改变 ODBC 应用程序调用数据源的代码,仅需改变 ODBC 中数据源的配置。这样,就可避免ODBC 应用程序直接与数据源打交道。如图 1 所示。在使用 ODBC API 时, 用户须引入的头文件为 sql.h , sqlext.h , sqltypes.h 。用 ODBC API 创建数据王樱: 硕士 讲师基金资助: 湖南省教育厅科研项目( 04c142)个 同 数 据 源 的 连 接 ,是 操 作 ODBC 数 据 源 的 基 础 。数 据 库 数 据 仓 库 数 据 挖 掘CRecordset 类代表从数据源中选择一 组记录的集 合,它是操作数据源的工具。CRecordset 类提供了应用程 序与数据交互的实质。CRecordset 类用来封装对数据库的查询, 包括添加、修改、删除行。要 注 意 的 是 在 应 用 程 序 中 , 一 般 不 直 接 使 用CRecordset 类, 而是使用其派生类。如果你没有自己的 派生类, 就几乎不可能使用 CRecordset 类对象。因为 CRecordset类为你派生出的类提供了一个框架, 当使 用 MFC Class Wizard 产 生 一 个 CRecordset 类 的 派 生 类时, MFC Class Wizard 会自动添加相应数据库表中 字段的成员变量, 并自动重载 CRecordset 类的成员函 数 DoFieldExchange(), 通过使用 RFX 函数来完成数据 库字段与记录集字段数据成员变量的数据交换。生成 派生类的步骤如下:(1) 通过添加类向导从 CRecordset 类派生类。(2) 指定记录集的字段数据成员。(3) 在向导生成的字段数据成员后面添加参数数 据成员, 一般添加后缀“param”。(4) 修改.cpp 文件中的成员函数定义, 为已经添加到类中的每一个参数数据成员添加 RFX 函数调用。(5) 在派生类的构造函数中增加参数 m_nParams的计数。当然在程序中使用 MFC ODBC, 除登录数据源之 外, 还需要在 stdafx.h 中包含 afxdb.h。2 数据访问对象( DAO )2.1 DAO在文档类的 OnOpenDocument()函数中加入m_pdb=newCDaoDatabase;m_pdbopen();m_pset=newMyDaoRcordset(m_pdb);m_psetopen()最 后 创 建 自 己 的 对 话 框 ,选 择 ClassWizard 的ClassInfo 页, 在 ForeignClass 项填入先前所创建的 My-DaoRcordset, 在 ForeignVariable 项填入 m_pset, 并对各 个 edit 栏用变量映射。在没有安装 office、Visual studio 等软件的系统中,会提示“无法对 DAO/JETDB 引擎进行初始化”的错 误 , 程 序 根 本 无 法 使 用 。 原 因 在 于 操 作 系 统(Win- dows9x/NT/2000/XP)中没有对 DAO 注册。3对 象 链 接 和 嵌 入 式 数 据 库 ( OLE / DB ) 与活动数据对象( ADO )3.1 OLE/DBOLE/DB ( Object Linked and Embedded Database) 是基于 COM 接口的访问数据库的新技术, 它提供了 对包括关系数据库和非关系数据库在内的所有文件 系统的统一接口。OLE/DB 属于数据库访问技术中的 底层接口, 为了在 Visual C+中使用 OLE/DB, 用户必 须熟悉 C+模板类、COM 技术和 OLE/DB 接口, 这种 要求对一般用户而言有点苛刻。3.2 ADOADO( Active Data Object) 技术是基于 OLE/DB 的 访问接口, 它对 OLE/DB 的接口作了封装, 定义了 A- DO 对象, 属于数据库访问的高层接口。ADO 和 OLE/DB 的 关 系 类 似 于 MFC ODBC 与 ODBC API 的 关 系, 它在继承 OLE/DB 优点的同时大大简化了 OLE/ DB 的操作。与微软的其它数据访问模型相比, ADO 对象模型非常精炼, 仅由三个主要对象 Connection、Command、 Recordset 和几个辅助对象组成。Connection 对象提供 OLE/DB 数据源和对话对象之间的关联, 它通过用户 名称和口令来处理用户身份的鉴别, 并提供事务处理 的支持, 还提供执行方法, 从而简化数据源的连接和数据检索的进程; Command 对象封装了数据源可以解 释的命令, 该命令可以是 SQL 命令、存储过程或底层 数据源可以理解的任何内容; Recordset 用于表示从数 据源中返回的表格数据, 它封装了记录集合的导航、 记录更新、记录删除和新记录的添加等方法, 还提供 了批量更新记录的能力。在 VC+应用程序中使用 ADO 的方法如下:首先引入 ADO 动态链接库: VC+中通过在程序中使 用预编译指令 #import 来告诉编译器将此指令中指定的动态链接库引入工程中, 并从动态链接库取出其中的对象信息, 产生 msado15.tlh 和 ado15.tli 两个头文件DAO ( Data Access Object) 基 于 MicrosoftJet数据库引擎, 通过数据存取对象来操纵数据库, 它提供使用 Microsoft Jet 数据库引擎的层次来访问数据 库, 使用户通过代码来创建和操作数据库。DAO 的前 身就是 ODBC。DAO 由一个分级的对象集合组成, 这 些 DAO 对象协同工作形成 DAO 结构体系。2.2 MFC DAO在 Visual C+4.0 之后, Visual C+提供了对 DAO 的 封装, 程序员可以使用 Visual C+提供的 MFC DAO 类 方 便 地 访 问 数 据 库 。 如 : CDaoWorkspace、CDaoR- cordset、CdaoRcordView 是常用的三个类, 这些类密切对应于 DAO 对象, 功能也与 ODBC 中相对应的类的 功能基本相同。使用 AppWizard 的过程基本上与使用 ODBC 时相类似, 只是在选择数据源时要选择已建立 好的 DAO 数据源, 在后从系统中选出源数据库和表,令 其 自 动 生 成 这 部 分 的 代 码 。 在 应 用 程 序 中 使 用MFC DAO 可以通过以下步骤来实现:首先应确保在 stdafx.h 头 文 件 中 包 含 了 afxdao.h头文件:#includeafxdao.h接着创建自己的 CDaoRcordset 类( 设为 MyDaoR- cordset) , 并使它与你所需要的数据库的表相连。同时您 的 论 文 得 到 两 院 院 士 关 注来定义 ADO 库。例如:#importc:program filescommon domsado15.dllno_namespace能, 而且 ADO 适用的数据源的范围要大得多, 同时它还允许进行批更新, 这样就大大减轻了网络负担, 提 高数据库处理效率。由于 ADO 缺乏大量的第三方厂商的支持, 使得 ADO 目前的远不如 ODBC 普及, 但其 面 向 对 象 的 特 性 将 使 ADO 具 有 比 较 广 阔 的 发 展 前景。5 结束语考 虑 到 Microsoft Access 2000 的 功 能 以 及 VC+ 访问 Access 数据库的便利, 笔者选用 Access 2000 来 构建软件的数据库。同时笔者所开发的管理系统对数 据库性能的要求不高, 数据库中的数据量也不大, 操 作上主要以查询数据为主, 数据库的操作速度也不必 着重考虑, 在数据库访问技术的选择主要考虑技术上 易于掌握和实现。所以笔者最终选择了 MFC OBDC 和 Visual C+的数据控件。参考文献:1方莉等, MFC ODBC 数据存取技术J, 上海电力学院学报,2002(3).672刘艳丽等, 利用 DAO 实现 Visual C+对数据库的访问J, 信 阳师范学院学报(自然科学版), 2000(1).713苏岳龙,李贻斌,宋锐, 基于 VC+ 6.0 的高速串口通信数据采 集系统J微计算机信息,2005,5:147- 149作者简介: 王樱.女 讲师 1971 年 10 月,土家族,在读硕 士. 现在在衡阳师范学院计算机系从事计算机理论教 学工作, E- mail: 。Author br ief intr oduction:Wang, Ying, female, lectur- er, Master; Tujia Nationality, Computer- theory teaching, E- mail: ( 421008 湖南衡阳师范学院计算机系) 王 樱 徐雨明(Depar tment of Computer Science, Hengyang Nor -filessystema-其次定义链接对象与初始 化 OLE/COM 库环境:在 MFC 中 只 要 用 一 条 语 句 就 可 以 自 动 实 现 初 始 化COM 和结束时关闭 COM 的操作。AfxOleInit();接着就可以直接使用 ADO 了。4各种数据库访问技术的比较ODBC 的 优 点 是 它 的 使 用 比 较 简 单 ,只 要 登 录Windows 控制面板中的“数据源”, 就可以使 ODBC 链接到相应的数据库。而且 ODBC 出现得比较早, 几乎 支持所有的关系型数据库, 如 SQL Server、Access、Ora- cle 等。它可以通过 MFC 或 API 使应用程序独立于源数据库管理系统, 所以应用广泛。但是使用 ODBC 访 问数据库速度较慢, 同时 ODBC 的使用需要很多相应的部件支持, 这使得当从一个系统移植到另一个系统时, 不但要重新注册数据源, 而且要移动很多部件。DAO 克服了 ODBC 的一些缺陷。由于它实际上是通过 Microsoft Jet 数据库引擎来访问数据库,所以DAO 方法非常适合访问 Jet 型数据库( .MDB) , 同时使用 DAO 方法不需要登录数据源, 只要指明数据库的 路径即可。DAO 技术的功能很强大, 它支持数据库的 DML 和 DDL, 通过 DAO 可访问从 txt 文件直到后台大 型数据库的多种数据格式。但是 DAO 也存在较大的缺点: 主要是 MFC DAO 与 Jet 数据库引擎之间的版 本问题, 如表 1 所示。虽然微软声称 DAO 也可以访问 非 Microsoft 产品建立的数据库, 但实际使用时会遇到很多问题 ( 主要是兼容问题) 。另外由于 Visual C+. NET 环 境 和 向 导 不 再 支 持 DAO ( 虽 然 仍 包 含 DAOmal Univer sity,Hengyang Hunan 421008 China)Wang, Ying Xu , Yuming(投稿日期:2005.7.6) (修稿日期:2005.7.16)类) ,用户必须手工编写过去由向导执行的任务, Mi-crosoft 建议新项目采用 OLE/DB 模板或 ODBC。表 1 Visual C+支持的 Jet 数据库引擎版本(接 13 页)参考文献:1D.Johnson,C.Perkins.Mobile Support in IPv6.rfc3775.June2J. Loughney M. Nakhjiri, C. Perkins, and R. Koodli, Cont
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东汉语自考试题及答案
- 理财从业考试题及答案
- 老师招考试题及答案
- 课件昆虫边框模板
- 客车直播考试题及答案
- 考研美术考试题及答案
- 康复语言考试题及答案
- 铌碳还原火法冶炼工特殊工艺考核试卷及答案
- 塑料压延工专项考核试卷及答案
- 经管考试题目及答案
- GB/T 45265-2025下肢假肢增材制造通用技术要求
- 设备维护与保养说明手册
- 教学课件-《伺服系统(第2版)》钱平
- 做最勇敢的自己
- 《诚信是金》班会课件
- 药房用药小知识培训课件
- 乳腺癌图文课件版
- 《支气管动脉栓塞术》课件
- 子宫肌瘤-妇产科课件
- 2024-2025年江苏专转本英语历年真题(含答案)
- GB/T 44808.1-2024人类工效学无障碍设计第1部分:消费品中的语音提示
评论
0/150
提交评论