ODBC OLEDB ADO等数据库访问技术

来源:互联网 发布:马克斯cms 编辑:程序博客网 时间:2024/05/01 00:28

花了点时间理了一下数据库访问技术相关的东西,一般地,一个数据库产品的发布后,相应地,会为开发者提供一套访问改数据库的接口,比如MySql提供的C API,可以通过这些数据库产品本身的API进行数据库操作。

比如:通过API mysql_init() mysql_real_connect()连接数据库,其它的数据库产品也相应的提供了类似的API。问题是,这样直接通过底层数据库产品的API开发应用

加大了开发难度,换了数据库又要学习新的API,不适应快速发展的软件开发模式,也降低了软件的可重用性。为此,产生了许多标准的数据库访问技术。

1.ODBC Open Database Connectivity

ODBC开放数据互联技术提供了访问关系型数据库的统一接口,使用ODBC API可以与任何具有ODBC驱动程序的关系型数据库交互,并且大部分数据库都提供了

ODBC驱动程序。

比如: ODBC API连接数据库如下

SQLRETURN SQLConnect( SQLHDBC ConnectionHandle,    

                                                    SQLCHAR * ServerName,   

                                                    SQLSMALLINT NameLength1,    

                                                    SQLCHAR * UserName,    

                                                    SQLSMALLINT NameLength2,    

                                                    SQLCHAR * Authentication,    

                                                    SQLSMALLINT NameLength3);

ODBC的体系结构如下:

 

2.DAO Data Access Object

DAO 最早是微软为了Microsoft Jet数据库引擎提供给Microsoft Access所使用,现在也支持其他数据库,MFC的CDaoRecordset等类就是基于对DAO的封装产生的。

3.RDO Remote Data Object

RDO直接调用ODBC API可以为应用程序提供较好的性能。

4.OLE DB  Object Linking and Embedding  Database

OLE DB对ODBC进行了扩展,成为关系型和非关系型数据库访问的接口。OLE DB 定义了一组 COM 接口,对各种数据库管理系统服务进行封装,

并允许创建软件组件,实现这些服务。

5.ADO ActiveX Data Object

ADO建立在OLE DB之上,本身是OLE DB的客户程序,使用ADO的程序都间接的使用OLE DB,所以,ADO可以看做是面向对象的OLE DB技术,是高层的

编程接口,简化了OLE DB访问数据库。使用VC++ J进行ADO编程时,需要初始化COM环境

调用CoInitialize(NULL),以及释放COM环境CoUninitialize(),MFC中可调用AfxOleInit()初始化Ole环境。

使用ADO操作数据库简单高效,但ADO操作时一定要使用try-catch捕获异常。

只是简单了理清了几种数据库的访问方式,虽然有的可能已经不常用了,但知道了这些就能更好的先专攻某种主流技术而不会云里雾里的,那种感觉实在太糟糕了。

下一步可能深入研究一下OLE DB/ADO,努力。

只是简单的理了下方向性的东西,文章中若有错误,欢迎指正,谢谢。