一、 VC 提供的数据库访问技术
ODBC API 、 MFC ODBC 、 DAO 、 OLE DB 、 ADO
访问速度:传统的 ODBC 速度较慢。 OLE DB 和 ADO 都是基于 COM 技术,使用该技术可以直接访问数据库的驱动程序,速度大大提高。
可扩展性:通过 OLE DB 和 ActiveX 技术,可以利用 VC 提供的各种组件,控件和第三方提供的组建。从而实现应用程序组件化。
访问不同数据源:传统 ODBC 只能访问关系数据库。 VC 中提供 OLD DB 技术可以解决该问题。
二、 几种技术概述
1、 ODBC API
提供一个通用接口,为 ORACLE 和 SQLSERVER 都提供了驱动程序。用户可以 SQL 语句对数据库进行直接的底层功能操作。使用时应包含以下头文件。 ”SQL.H”,”SQLEXT.H”,”SQLTYPES.H”.
使用步骤如下:
第一步:分配 ODBC 环境,初始化一些内部结构。完成该步,需要分配一个 SQLHENV 类型的变量在 ODBC 环境中做句柄使用。
第二步:为将要使用的每一个数据源分配一个连接句柄,有函数 SQLALLocHandle ()完成。
第三步:使用 SQLConnect ()把连接句柄与数据库连接,可以先通过 SQLSetConnectAttr ()设置连接属性。
第四步:进行 SQL 语句操作。操作完就可以断开与数据库的连接。
第五步:释放 ODBC 环境。
特点:功能强大,提供异步操作,事务处理等高级功能。目前所有关系数据库都提供了 ODBC 的驱动程序,使用很广泛。
缺点:很难访问对象数据库和非关系数据库。
2、 MFC ODBC 类
为简化使用 ODBC API , VC 提供了 MFC ODBC 类,封装了 ODBC API 。
主要 MFC ODBC 类如下:
CDatabase 类:一个 CDatabase 对象表示一个到数据源的连接,通过它可以操作数据源。一般不需要直接使用 CDatabase 对象,因为 CDecordSet 对象可以实现大多数功能,但在进行事务处理时, CDatabase 就起到关键作用。
CRecordSet 类:一个 CRecordSet 对象代表一个从数据源选择的一组记录的集合 ----- 记录集。记录集有两种形式: snapshot 和 dynaset 。前者表示是静态视图。后者表示记录集与其它用户对数据库的更新保持同步。
CRecordView 类:是在空间中显示数据库记录的视图。这种视图是直接连到一个 CRecordSet 对象的格式视图。他从一个对话框模版资源创建。并将 CRecordSet 对象的字段显示在对话框模版的控件里。对象利用 DDX 和 RFX 机制。使格式上的控件和记录集的字段之间数据移动自动化。
CDBException 类:由 Cexception 类派生,以 3 个继承的变量反映对数据库操作时的异常。
M_nRetCode: ODBC 返回码。
M_strError: 字符串,描述造成抛出异常的错误原因。
M_strStateNativeOrigin: 字符串,描述以 ODBC 错误码表示的异常错误。
3、 MFC DAO
MFC DAO 是微软提供的用于访问 Microsoft Jet 数据库文件( * 。 Mdb )的工具。当只需访问 Access 数据库时用该技术很方便。
4、 OLE DB
与 ODBC 技术类似, OLE DB 属于数据库访问技术中的底层接口。
直接使用 OLEDB 需要大量代码, VC 中提供了 ATL 模版,
OLEDB 框架定义了应用的 3 个基本类。
数据提供程序 Data Provider : 拥有自己的数据并以表格形式显示数据的应用程序。
使用者 Consumers :试用 OLEDB 接口对存储在数据提供程序中对数据进行控制的应用程序。
服务提供程序 ServiceProvider :是数据提供程序和使用者的组合。
使用 OLE DB 编程时,用户使用组件对象开发程序,这些组件包括:
枚举器:用于列出可用的数据源;
数据源:代表单独的数据和服务提供程序,用于创建对话;
对话: 用于创建事务和命令;
事务: 用于将多个操作归并为单一事务处理;
命令: 用于向数据源发送文本命令( SQL ),返回行集;
错误: 用于获得错误信息。
5、 ADO
ADO 技术是基于 OLE DB 的访问接口。继承了 OLEDB 的优点,并对 OLEDB 的接口作了封装,定义了 ADO 对象,使开发简化。 ADO 属于数据库访问的高层接口。
ADO 在服务器应用方面非常有效,特别是动态服务器页面( ASP )的支持。
ADO 对象结构类似于 OLEDB ,但并不依靠对象层次。大多数情况用户只需创建并使用需要的对象。下面的对象类组成了 ADO 接口。
Connection : 用于表示与数据库的连接,以及处理一些事务和命令。
Command : 用于处理传送给数据源的命令。
Recordset : 用于处理数据的表格集, 包括获取和修改数据。
Field : 用于表示记录集中的列信息,包括列值和其他信息。
Parameter : 在传送给数据源的命令之间传递数据。
Property : 用于操作在 ADO 中使用的其它对象的详细属性。
Errro : 用于获取可能发生的详细错误信息