阿里巴巴是个快乐的青年
分类: Mysql/postgreSQL
2013-02-01 18:16:49
本文以Linux/Unix为蓝本介绍ODBC的原理、安装、配置和编程。
一、原理
图1 ODBC原理图
先普及几个知识:
数据源:是ODBC与数据库之间建立连接的依据,包括数据源名称、数据源描述、数据库驱动程序、数据库服务器地址、数据库端口号、数据库名称等。
ODBC驱动程序:ODBC与数据库之间的接口。
驱动程序管理器:将应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序执行完操作后得到结果返回给应用程序。
ODBC API:应用程序与ODBC之间的接口。
ODBC管理器:管理数据源、驱动程序。
用户通过ODBC管理器配置数据源,并获得数据源名称,应用程序提供数据源名称给ODBC,ODBC以此建立与相应数据库的连接。
有关ODBC原滋原味的信息请看这里,绝对有惊喜。
二、安装
1、源码安装
先下载最新的unixODBC源码包( )放到适合自己的目录下,比如:/usr/local,然后运行下述命令:
#tar zxvf unixODBC-2.3.1.tar.gz
#cd unixODBC-2.3.1
#./configure --prefix=/usr/local/unixODBC-2.3.1 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
#make
#make install
安装成功后,unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。
2、二进制安装
#yum install unixODBC
#yum install unixODBC-devel
安装成功后,各个部分与源码安装时所列的位置相同。
三、配置
ODBC的配置可以用ODBCConfig来完成(前提是已安装此程序,默认在/usr/bin下),这种方式跟Windows几乎一样,界面也基本一样,在此不略去不表。
当然也可以通过手工配置文件来完成ODBC的配置,下面会详细介绍。
需要注意的是,ODBC由微软提出,而后由于其显而易见的好处,以至于别的平台也纷纷加入此行列,Linux/Unix也不能免俗。
题外话:用过Windows ODBC 数据源的同学都知道,其提供了3种DSN:用户DSN、系统DSN和文件DSN。其中,用户DSN会把相应的配置信息写入用户注册表中且只允许创建此DSN的登录用户使用,而系统DSN会将配置信息写入系统注册表中且允许所有登录用户使用,与前两者不同的是文件DSN将配置信息写入磁盘上某个文件中且允许所有登录用户使用,神奇的是它还可以在没有任何用户登录的情况下,提供对对数据库DSN的访问支持,用户也可以以此为模板复制若干份到别的机器上来快速完成ODBC配置。 Linux/Unix的ODBC配置正如Windows ODBC的文件DSN一样,将配置信息写入文件(/etc/odbcinst.ini和/etc/odbc.ini)。
Linux/Unix的ODBC配置包括驱动配置和DSN配置,odbcinst的详细信息可以参看这里:
1、驱动配置
2、DSN配置
[MySQL-test]
Description = MySQL test database
Trace = Off
TraceFile = stderr
Driver = MySQL
SERVER = 192.168.1.26
USER = pharvey
PASSWORD =
PORT = 3306
DATABASE = test
看到木有,这两文件都以ini为扩展名,完全没有类Unix的范儿,甚至可以说毫无节操,。。。
四、编程
可以用ODBC API编程,也可以用QT之类提供的组件来编程,在此介绍ODBC API C编程,具体步骤如下:
(1)设定ODBC环境句柄并设置参数(SQLAllocHandle)
(2)设定连接句柄并设置超时参数(SQLAllocHandle)
(3)连接数据库(SQLConnect )
(4)分配SQL语句的句柄并进行查询(SQLAllocHandle)
(5)关于关闭连接和释放句柄(SQLDisconnect 和 SQLFreeHandle)
(6)错误信息处理
(7)获取本机DSN信息
这里,还有一篇不错的文章可以参考。。。呵呵。。。