目前在市面上最流行的两种数据库接口是ODBC和JDBC。Microsoft推出的ODBC是最早的整合异质数据库的数据库接口,获得极大的成功,现在已成为一种事实上的标准。访问数据库最常用的方法就是通过ODBC。现在我们就来谈谈什么是ODBC。
Mcrosoft推出的ODBC(Open Database Connectivity)技术为异质数据库的访问提供了统一的接口。ODBC基于SQL(Structured Query Language),并把它作为访问数据库的标准。这个接口提供了最大限度的相互可操作性:一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。一个软件开发者开发的客户/服务器应用程序不会被束定于某个特定的数据库之上。ODBC可以为不同的数据库提供相应的驱动程序。
ODBC的灵活性表现在以下几个方面:
应用程序不会受制于某种专用的API
SQL语句以源代码的方式直接嵌入在应用程序中
应用程序可以以自己的格式接收和发送数据
ODBC的设计完全和ISO Call-Level Interface兼容
现在的ODBC数据库驱动程序支持55家公司的数据产品
因为很多朋友不太熟悉ODBC,做了简单的介绍之后,我们先来解释一些与ODBC有关的名词。
ODBC驱动程序:是一个动态链接库(DLL),用以将特定的开放式数据库连接的数据源和另一个应用程序(客户端)相连接。
ODBC数据源:作为数据源使用的数据库或数据库服务器。ODBC数据源通过它们的数据源名称来引用,或者通过具体引用ODBC驱动程序和服务器名称来引用。可以在Windows的控制面板中使用ODBC管理程序或rdoRegisterDataSource(一个ODBC API)方法来注册命名的数据源。
ODBC驱动程序管理器:提供从主机语言到特定后端数据源驱动程序的接口。
ODBC API:数据库厂商为程序设计者提供的直接访问数据库的一组函数。注意:这里要指出的是,虽然ODBC API提供了很多很方便而且强大的功能。但是通常来说ODBC API都比较难学,而且使用很容易出错。虽然允许用ODBC API来操作ODBC句柄,但还是要小心,如果不正确地使用ODBC API,可能会导致不可预知的错误。例如,假如使用ODBC API代码来关闭连接或释放这些ODBC句柄中的任何一个,那么RemoteData控件或RDO的行为将是不可预知的。保存ODBC句柄以供备用也是没有意义的,因为它们是可变的。
最新推出的ODBC 3.0已经升级到32位,支持Win32。下面介绍一下ODBC3.0的新功能:
1、 和X/Open和ISO CLI兼容ODBC 3.0是X/Open和ISO CLI(Call-Level Interface)标准的超集,其增加的功能包括
描述符(Descriptor)
描述符是ODBC 3.0提供的最重要的新功能之一。一个描述符是一个数据结构,用它来描述一个SQL语句中的动态参数,或者一个返回记录集合的域(column)的信息。描述符提供了对域信息和参数的一种直接的统一访问方式,大大方便了数据库操作。ODBC 3.0的许多增强的性能均得益于使用描述符。域信息和参数由两个描述符来描述。一个描述符存放在应用程序的缓冲区中,另外一个相对应地放在服务器端。
诊断(Diagnostics)
在ODBC 3.0中,函数调用的返回信息放在诊断区域中。每一个环境、连接、声明以及描述符句柄都有一个诊断区域。在诊断区域的头字段返回一般的函数执行信息,它的记录字段记录ODBC函数调用的错误信息和警告。ODBC 3.0对诊断信息做了以下改进:1、诊断区域是可以扩展的。2、从诊断区域读数据不会发生灾难性错误3、状态信息按照它们的级别被记录。4、可以记录特定的行列错误。5、目录函数栏名 新的属性和函数在ODBC 2.0的连接和声明选项在ODBC3.0中已变成属性,应用程序可以通过函数调用来访问和修改它们。
ODBC 3.0引入了环境属性的概念,通过函数可以访问和设置这些属性。实际上这里的属性和ODBC的选项相对应。
ODBC 3.0还提供了新的函数,用于处理描述符和诊断区域,还提供了处理环境、连接、声明属性的函数。
ODBC 3.0 API的改进
引入了新的数据类型,如:64位整数,支持数值和小数的C的结构等
支持批处理?支持有名字的参数
提供多列读取的扩展的错误信息
改进了书签,如:长度可变,通过书签可以取一列数据
和SQL-92兼容
提供类型信息
ODBC 3.0完全向后兼容。当使用ODBC3.0驱动程序管理器时:
一个ODBC 2.x的应用程序可以运行在ODBC 3.0的驱动程序,或ODBC 2.x的驱动程序之上。
一个ODBC 3.0的应用程序运行在ODBC 3.0的驱动程序之上。
如果一个ODBC 3.0的应用程序只使用ODBC 2.x的功能,则它可以运行在ODBC 2.x的驱动程序上。
---------------------------------------------------------------
数据访问接口体系探讨(转)
1.Open Client/Open Server
C/S结构的中间件具体来说是配置在客户端和服务器端的软件包(注2::).Sybase Open Client/Open Server使分布式异构环境下的互操作成为可能.这里我们简述Sybase C/S 中间件的工作原理.Open Client 是客户端的API,它使客户端应用程序和第三方的工具软件把SQL语句和远程过程调用(RPC)通过网络发送给Sybase SQL Server,或经由Open Server应用(以利用Open Server开发为标志的应用)发送到其它的数据源(数据库系统或Objects Managents或普通的数据存储体)或其它类型的服务器.从Open Client API调用到信道传输有两种很重要的行为发生,TDS(同于Telnet、Ftp等属于应用层协议)格式化程序负责将上层的以API调用为标志的SQL或RPC等转化为TDS消息包而支持多种传输规程的网络库把TDS包按对应客户端与服务器端通信协议的封装格式化.自然在客户端,信道传输行为发生之前,同于其它的网络应用还有很多的行为(具体参看有关协议模型的资料).Open Server是服务器端的API,它允许客户机以SQL语句或RPC形式向一个非Sql Server数据源或其它类型的服务器发送请求.而后使该数据源或特殊服务器以标准的TDS格式向客户端送回状态和数据.Open Server可构成较为理想的C/S结构环境,即所有的客户端能按统一的方式与所有的服务器交互,而所有的服务器亦能按统一的方式接受客户端的请求,并以标准的格式向客户端返回结果.作为扩展,我们这里再介绍点关于Open Client/Open Server的知识,以便读者在下面详细探讨的ODBC体系分析中看到一些历史的技术因素.事实上,正如上面所述,Open Client/Open Server都是API,到Sybase System 11为止,成熟的API包含客户端的DB-Library、Client-Library和服务器端的Server-Library还有公共的CS-Library.重要的特性对比列举如下
1.Client-Library 优于 较老的DB-Library 而且Client-Library是与SQL无关的.
2.DB-Library 不支持服务器端的游标.Client-Library功能全面,支持所有类型的游标,包括敏感和不敏感游标
3.Open Server 是服务器端的API,用来开发服务器端应用.提供一致的数据访问框架能力.Open Server应用既可与Sybase通信又可与非Sybase通信而Sybase SQL Server 连接其它的数据源需要利用Open Server API开发Sybase Open GetWay.
这里稍微提一下,通过对Open Client/Open Server实现的功能、当时数据库系统服务特性、ODBC等较晚出现的接口体系、现时数据库系统服务特性的综合分析对比, 你会发
现Open Client 应用(Open Client Application,包含Sybase Open GetWay、Normal DataSource Application、Mail Open Client 及其它的一些体现统一的数据访问框架的应用)在后来的数据接口体系中亦可实现同样功能但是实现的方式、功能的实现体及其分布大不相同.虽然到现时还有一些影子.