主题:[讨论]数据库连接
雨晴
[专家分:20] 发布于 2007-01-05 20:58:00
请问一下,DNS和ODBC,还有OLEDB连接的区别,各有什么优缺点。谢谢了。
回复列表 (共1个回复)
沙发
初拥创始者 [专家分:540] 发布于 2007-01-05 21:05:00
以前我问过类似的问题,这里有人家的一点回复,希望有帮助:
这说到底是ado技术中odbc 和oledb的区别,我也说不太清楚,希望下面这段话可以有个抛砖引玉的作用:
史前
那时候每个数据库供应商(其实也没几个)
都有自己的数据库操作API,
每个应用程序只能使用一个固定的数据库
想换数据库?没门!你要全部重新写
后来
X/OPEN和ISO(好像还有IBM)说
KAO,这么乱,程序员怎么活啊
于是提出了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是最底层的Microsoft数据访问层
OLEDB是在此基础上开发的,应用于OLE所有对象的,虽然它用起来方便点,但是需要经过中间转换,最终还是要通过odbc层,所以效率会低一些
我来回复