OLEDB和ODBC以及ADO解释

史前
    那时候每个数据库供应商(其实也没几个)
    都有自己的数据库操作API,
    每个应用程序只能使用一个固定的数据库
    想换数据库?没门!你要全部重新写
后来
    X/OPEN和ISO(好像还有IBM)说
    这么乱,程序员怎么活啊
    于是提出了CLI(Call-Level Interface)
    每个数据库的CLI(驱动程序)基本上相同,
    程序员总算好过点了,可是要换数据库,
    你写的程序需要重新编译(或许还要安装)
再后来
    于是ODBC来了,它通过动态装载各个数据库的CLI
    把函数调用转换成每个数据库的CLI调用
    数据库应用程序总算和数据库供应商没什么关系了

再后来
    MS提出了OLE,MS还有了自己的数据库
    (Access/SQL Server)
    MS是老大,这个问题上当然要有自己的看法
    要是还只是提供ODBC,那多没面子
    所以提出了 OleDb,它通过COM接口调用
    OleDb也需要每个数据库提供一个CLI
    (不过有了新名词,叫作Provider)
    MS 给 Access和SqlServer分别写了一个Provider
    不过为了照顾使用ODBC的,也提供了一个ODBC的Provider
    这样那些只提供ODBC的数据库也可以通过OleDb访问
    不过这样效率就稍微低了(因为要经过两层么)
    所以现在有些数据库会提供自己的Provider

再后来
    MS说OleDb的接口太复杂了
    程序员也就调调QUERY
    没必要搞这么复杂吧
    于是提出了ADO,ADO 通过在OleDb上面封装
    简化了使用方法,程序员在操作数据库上总算是解放了
新世纪终于到来了
    MS也发明了.NET,为了适应新世纪新潮流
    也提出了 ADO.NET

 

演进路标(从早到晚):ODBC——OLE DB——DAO——RDO——ADO;

OSI模型层次看(非绝对,部分有交叉):最底层数据源——ODBC——OLE DB——RDO、DAO、ADO——应用程序。

 

 

你可能感兴趣的:(odbc)