一、
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
:
用于获取可能发生的详细错误信息。