一、无ODBC时代
一般来讲不同的数据库厂商都有自己的数据库开发包,这些开发包支持两种模式的数据库开发;
1.预编译的嵌入模式(例如Oracle的ProC,SQL Server的ESQL)
2.API调用(例如Oracle的OCI)
预编译的嵌入模式:所有的SQL语句要写在程序内部,并遵守一定的规则,然后由数据库厂商的预编译工具处理后形成C代码,最后由C编译器进行编译
API调用:数据库厂商提供了开发包,你通过各种API函数就可以连接数据库,执行查询、修改、删除、操纵光标,执行存储过程
两者的对比:预编译的缺点就在于无法生成动态的SQL语句;API调用给程序更多自由,但只能针对同一种数据库。
从上图中看出,那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序(比如,针对数据库1的版本、数据库2的版本、数据库3的版本...)同时,多种数据库之间的互连访问成为一个突出的问题!
为解决这个问题,由三十多家著名的软件公司组成了一个组织,这个组织的目的是定义执行SQL的共同基础,以使其成员的产品都可以使用它来彼此交流数据。
二、ODBC时代 --- DBMS(数据库管理系统)
在1994年,微软发布了针对Windows操作系统设计,实现上述标准的“这个产品”,并将这个产品正式成为开放数据库连接(Open Data Base Connection),即ODBC。基本思想如下图:
传统方式对比。如下图
图中,应用程序1、2、3采用公共接口API进行访问的,如下图所示:
如上图简化了开发维护难度,应用程序的目标代码能使用于不同的DBMS,把应用程序与底层网络环境和DBMS分开,ODBC开放驱动程序管理模块,来接纳各个DBMS供应商(ORACLE、SYBASE、DB2等)提供符合ODBC规范标准的驱动程序,结构如下图: