VS.NET(C#)提升-2.2_数据库接口:ODBC基本概念

了解基本概念

一,无ODBC时代

一般来讲不同的数据库厂商都有自己的数据库开发包,这些开发包支持两种模式的数据库开发:

预编译的嵌入模式(例如Oracle的ProC,SQL Server的ESQL)

API调用(例如Oracle的OCI)

预编译的嵌入模式:所有的SQL语句要写在程序内部,并且遵守一定的规则,然后由数据库厂商的预编译工具处理后形成C代码,最后由C编译器进行编译。

API调用:数据库厂商提供了开发包,你通过各种API函数就可以连接数据库,执行查询、修改、删除,操纵光标,执行存储过程等。

两者的对比:预编译的缺点就在于无法动态的生成SQL语句;API调用给程序更多*,但只能针对同一种数据库。

VS.NET(C#)提升-2.2_数据库接口:ODBC基本概念

从上图中不难看出,那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序(比如,针对数据库1的版本、数据库2的版本、数据库3的版本…..同时,多种数据库之间的互连访问成为一个突出的问题!

为解决这个问题,由三十多家著名的软硬件公司组成了一个组织,这个组织的目的是定义执行SQL的共同基础以使其成员的产品都可以使用它来彼处交流数据。

二,ODBC时代

1994年,微软发布宣布了针对Windows操作系统设计,实现上述标准的“这个软件产品”,并将这个产品正式称为开放数据库连接(Open Data Base Connection),即ODBC基本思想如下图:

VS.NET(C#)提升-2.2_数据库接口:ODBC基本概念

传统方式对比,如下图

VS.NET(C#)提升-2.2_数据库接口:ODBC基本概念

图中,应用程序123是采用公共接口API进行访问的,如下所示:

VS.NET(C#)提升-2.2_数据库接口:ODBC基本概念

如上图简化了开发维护难度应用程序的目标代码能适用于不同的DBMS,把应用程序与底层网络环境和DBMS分开,ODBC开放驱动程序管理器模块,来接纳各个DBMS供应商(ORACLESYBASEDB2等)提供符合ODBC规范标准的驱动程序,结构如下图:

VS.NET(C#)提升-2.2_数据库接口:ODBC基本概念