VC++主要提供以下几种数据库访问技术:
-
ODBC(Open DataBase Connectivity)
-
MFC ODBC (Microsoft Foundation Class ODBC)
-
DAO (Data Access Objects)
-
OLE DB (Object Link and Embedding DataBase)
-
ADO (ActiveX Data Objects)
1. ODBC和MFC ODBC
ODBC是为客户应用程序访问关系数据库时提供的一个标准接口,对不同的数据库,ODBC提供了一套统一的API,使得应用程序可以应用所提供的API,访问任何提供了ODBC驱动程序的数据库。而且,由于ODBC已经成为一种标准,所以现在几乎所有的关系数据库都提供了ODBC的驱动程序,从而使得ODBC应用更加广泛。
ODBC API可以进行一些低层的数据库操作,但代码编制相对来说比较复杂;而MFC ODBC是Visual C++对ODBC API封装得到的,因此可以简化程序设计,但缺点也是不言而喻的,那就是无法对数据源进行底层操作。
ODBC
是一种使用
SQL
的程序设计接口。使用
ODBC
让应用程序的编写者避免了与数据源相连的复杂性。这项技术目前已经得到了大多数
DBMS
厂商们的广泛支持。
Microsoft Developer Studio
为大多数标准的数据库格式提供了
32
位
ODBC
驱动器。这些标准数据格式包括
SQL Server
、
Access
、
Paradox
、
dBase
、
FoxPro
、
Excel
、
Oracle
以及
Microsoft Text
。如果用户希望使用其它格式,用户需要相应的
ODBC
驱动器及
DBMS
。
Visual C++ MFC
类库定义了几个数据库类。在利用
ODBC
编程时,经常要用到
Cdatabase
(数据库类)、
CrecordSet
(记录集类)和
CrecordView
(可视记录集类)。
2. DAO
DAO提供了一种通过程序代码创建和操纵数据库的机制。多个ADO构成一个体系结构。在这个结构中,各个DAO对象协同工作。MFC DAO对象协同工作。MFC DAO是微软公司提供的用于访问Microsoft Jet数据库文件(*.mdb)的强用力的数据库开发工具,它通过DAO的封装,向程序员提供了DAO丰富的操作数据库的手段。
和
MFC ODBC
相比,
MFC DAO
在编程的方法上并没有太多的不同。例如在这里一类
CdaoDatabase
代替了前面的
Cdatabase
,以
CdaoRecordset
代替了
Crecordset
等。但两者也不是完全一样,依据用户使用的数据库系统不同,选择不同接口会导致应用性能方面的较大差异,例如要通过
Microsoft Jet
数据引擎访问
Microsoft Access
数据库,使用
DAO
就会有显著的性能优势。另外,
DAO
接口还有其他一些特点,比如可以通过
DAO
访问数据库中的数据和数据库的结构定义,而且,
DAO
本身就是一组
COM
接口,加上
MFC
的封装,在很大程度上会给简化编程。
3. OLE DB和ADO
OLE DB是Visual C++开发数据库应用中提供的基于COM接口的新技术,因此OLE DB对所有的文件系统(包括关系数据库合肥关系数据库)都提供了统一的借口。这些特性使得OLE DB技术比传统的数据库访问技术更加优越。
直接使用OLE DB来设计数据库应用程序需要大量的代码。在VC中提供了ATL模板,用于设计OLE DB数据应用程序和数据提供程序。它是一种底层接口。而ADO技术则是基于OLE DB的访问接口,对OLE DB的接口作了封装,定义了ADO对象,使得程序开发得到简化,它属于数据库访问的高层接口。
ADO
是为
Microsoft
最新和最强大的数据访问接口
OLE DB
而设计的,是一个便于使用的应用程序层。
OlE DB
为任何数据源都提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件、文件系统、文本和图形以及自定义业务对象等。
ADO
在关键的
Internet
方案中使用最少的网络流量,并且在前段和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。同时
ADO
使用了与
DAO
相似的约定和特性,使得它更易于学习。