一、ODBC的目标:
ODBC技术的目标是让数据库应用程序可以链接到各种各样的数据源,而不必重新编译或链接。比如一个程序在启动时,让用户选择数据源,随后执行一系列代码,比如创建一个表、添加几条记录,然后执行完毕。不管用户选择的数据源是什么类型的数据库、是哪个数据库、它的实际操作如何。也就是说可以写出与数据源无关的程序。
比如下面这组REALbasic代码(需要安装Rb的ODBCDatabase插件)能在数据源名称(DSN)“RSS”所指代的数据库中创建一个空白的表,而不必知道“RSS”的类型。用户如果在ODBC管理器中修改了“RSS”,比如将类型从MySQL改为MS SQL Server,这段代码仍能在不需要重新编译、链接的状况下运行,之不过最后会在MS SQL的数据库中创建表而已。
Dim db As ODBCDatabase
db = New ODBCDatabase
db.DataSource = "rss" 'the DSN you set
If db.Connect Then
'Return the database name set by ODBC Setup
msgbox db.DatabaseName
'Create a table
db.SQLExecute ("Create Table test (texta Text, textb Text)")
if db.Error then
MsgBox db.ErrorMessage
else
db.Commit
MsgBox "Create Table Successed!"
end if
Else
MsgBox db.ErrorMessage
End If
二、如何实现这一目标
实现这一目标的方法是在数据库应用程序和数据源之间添加一个中间层,即ODBC技术。
一般的数据库链接方式是这样的:
数据库程序<——>数据源
加了中间层之后的链接变成了:
数据库程序<——>ODBC Driver Manager<——>ODBC Driver<——>数据源
甚至:
数据库程序<——>ODBC Driver Manager<——>ODBC Driver<—…(多个ODBC Driver)…—>ODBC Driver<——>数据源
或者:
客户端数据库程序<——>客户端ODBC Driver Manager<——>客户端ODBC Driver<—Gateway及其他软件—>服务器端ODBC Driver Manager<——>一系列服务器端ODBC Driver<——>一系列服务器端数据源
三、ODBC Driver
就像需要不同的显卡或打印机驱动程序才能将应用程序中需要输出的内容,在不同的显示屏或打印机上输出出来一样,ODBC驱动程序用于将应用程序与数据源链接起来。它专为特定的数据源编写,提供了操作数据源的功能,并为数据库程序提供了一致的接口,这样数据库应用程序就不需要了解数据源的情况而能直接与之通讯了。ODBC驱动程序本质上十一个动态连接库(共享库),在用户访问特定的数据源时被动态加载。
四、ODBC Driver Manager
ODBC驱动程序管理器也是一个动态链接库。要它干嘛呢?仔细想一下就知道了,虽然ODBC Driver是一个动态库,因此数据库程序不用与它静态链接起来,但程序中也要定义动态库中所有需要使用的成员函数或结构之类。在C/C++/Obj-C之类的语言中,要包含改驱动的头文件,在Basic中要Declare该库中的所需使用的函数。这样不重新编译或链接应用程序就能操作各种不同的数据源的想法显然没法实现。这样ODBC驱动程序管理器就登场了,它通过数据源名称(DSN)中的信息来操作各种各样的ODBC Driver,而用户开发的数据库应用程序则只要操作ODBC Driver Manager这个动态库就行了。因此在C/C++/Obj-C之类的语言中,如果要使用ODBC来开发程序,一般需要包含ODBC Driver Manager的头文件,而ODBC Driver要通过ODBC Driver Manager才能把处理好的结果反馈给用户写的程序,因此当然也要包含ODBC Driver Manager的头文件。
五、ODBC Administrator/DNS (ODBC)和ODBC Setup库
有了ODBC Driver和ODBC Driver Manager,只需要数据源名称(DSN)信息就能操作到数据源了。但驱动也好驱动管理器也好都是动态库,那么用户怎么配置数据源名称(DSN)呢?用户可以手动写注册表(Windows)或ini配置文件(非Windows),或者使用ODBC管理程序,在Windows中叫做“数据源(ODBC)”(控制面板中)。如果需要以图形化方式来配置,还需要带有对话框资源的ODBC Setup动态库(在Windows中一般是必须的)。像Windows ODBC管理器、unixODBC、iODBC一般是ODBC Driver Manager和ODBC Administrator的合称,是带有这两个程序和一些其它实用工具及帮助说明文件的软件包。