了解ODBC
大四有次课程设计,是做数据库应用程序的,当时按照老师的那本书中的实例,几乎没有动脑,程序就ok了
现在觉得这种行为真愚蠢。
工作后,接触的全部是跟数据库驱动相关的bug,对各种Driver的使用也了然于胸,大学时候能有这种实习机会的话,绝对大受裨益
后知后觉的事太多了…
之前一直搞不清楚ODBC是微软自己的协议,还是一种通用标准,很多数据库只有在Windows平台上才有ODBC库,比如Symfoware
但是在SQL ISO2003中没有ODBC这一章,却在第三章有对CLI的实现进行了详细说明,这让人费解。
最近综合一些信息,包括自己的理解,维基百科上的词条等,算是得到了答案:
1.用户使用ODBC是通过ODBC连接管理器+ODBC驱动程序实现的。Windows上的Microsoft ODBC是使用最广泛的ODBC管理器工具,而数据库厂商去实现ODBC驱动程序,厂商的ODBC驱动程序对用户来讲,往往是不可见的或者不能直接使用的,ODBC管理器可以用来设置ODBC数据源,而用户写的C程序也可以调用微软提供的ODBC API函数
2.ODBC标准是由微软最早提出的,发展到ODBC3的时候,已经很成熟,ISO就根据ODBC标准制订了CLI标准,现在使用的统一的的C语言接口,所以叫做Call-level Interface,功能跟ODBC几乎相同。
3.也许是习惯的缘故,Symfoware面向Windows ODBC管理器的库仍称之为ODBC库,CLI库是后来完全基于ODBC库开发出来的,接口增加了,也脱离了对ODBC管理器的依赖,扩展性和独立性都提升了不少
4.IBM的DB2公开了CLI接口,Symfoware没有,Symfoware在Windows平台可是使用ODBC API,但是非Windows场合,却不能,即使巧妙的用到了,出了问题Fujitsu是免责的
February 11th, 2010 by xifanlou | Posted in Symfoware | Comments (2)
April 7th, 2011 at 23:46
感动得一米,中文维基百科中ODBC的条目,我可是贡献了不少啊~~ 可惜最近陷入了倦怠期,对于什么事情都不是太有热情。也已有两个月未给维基百科做共享了,惭愧得紧
April 11th, 2011 at 20:59
后来有人讲CLI在ODBC之前,这个我还没调查过