当前位置:首页 >> 计算机软件及应用 >>

Linux下ODBC安装配置


ODBC 原理
ODBC 是 Open Database Connect 即开放数据库互连的简称,它是由 Microsoft 公司 于 1991 年提出的一个用于访问数据库的统一界面标准, 是应用程序和数据库系统之间 的中间件。 它通过使用相应应用平台上和所需数据库对应的驱动程序与应用程序的交互 来实现对数据库的操作,避免了在应用程序中直接调用与数据库相关的操作,从而提供 了数据库的独立性。 ODBC 主要由驱动程序和驱动程序管理器组成。 驱动程序是一个用以支持 ODBC 函数 调用的模块,每个驱动程序对应于相应的数据库,当应用程序从基于一个数据库系统移 植到另一个时,只需更改应用程序中由 ODBC 管理程序设定的与相应数据库系统对应 的别名即可。驱动程序管理器可链接到所有 ODBC 应用程序中,它负责管理应用程序 中 ODBC 函数与 DLL 中函数的绑定。 ODBC 使用层次的方法来管理数据库,在数据库通信结构的每一层,对可能出现依赖 数据库产品自身特性的地方,ODBC 都引入一个公共接口以解决潜在的不一致性,从 而很好地解决了基于数据库系统应用程序的相对独立性,这也是 ODBC 一经推出就获 得巨大成功的重要原因之一。 从结构上分,ODBC 分为单束式和多束式两类。
1. 单束式驱动程序 单束式驱动程序介于应用程序和数据库之间, 像中介驱动程序一样数据提供一个统一的数据访问方式。 当用户进行数据库操作时, 应用程序传递一个 ODBC 函数调用给 ODBC 驱动程序管理器, 由 ODBC API 判断该调用是由它直接处理并将结果返回还是送交驱动程序执行并将结果返回。由上可见, 单束 式驱动程序本身是一个数据库引擎,由它直接可完成对数据库的操作,尽管该数据库可能位于网络的 任何地方。 2. 多束式驱动程序 多束式驱动程序负责在数据库引擎和客户应用程序之间传送命令和数据, 它本身并不执行数据处理操 作而用于远程操作的网络通信协议的一个界面。前端应用程序提出对数据库处理的请求,该请求转给 ODBC 驱动程序管理器,驱动程序管理器依据请求的情况,就地完成或传给多束驱动程序,多束式 驱动程序将请求翻译为特定厂家的数据库通信接口(如 Oracle 的 SQLNet)所能理解的形式并交于 接口去处理,接口把请求经网络传送给服务器上的数据引擎,服务器处理完后把结果发回给数据库通 信接口,数据库接口将结果传给多束式 ODBC 驱动程序,再由驱动程序将结果传给应用程序。

很多程序员已经体会到了在 Windows 平台下的 ODBC 的益处, 而在 Linux/Unix 下进行 数据库编程的时候却不得不根据不同的数据库来选择特有的 API 进行编程, 一旦数据库 发生了改变,所有与这些 API 相关的程序都必须进行修改。其实在 Linux/Unix 下现在 也有了自己的 ODBC,可以使我们的数据库编程就像在 Windows 平台下一样简单。 下面我们开始介绍 Linux/Unix 下的 ODBC:

回页首

Linux/Unix 下 ODBC 的安装
方法一: 先下载最新的 unixODBC 源码包( http://www.unixodbc.org/unixODBC-2.2.1.tar.gz) 放到/usr/local 下,然后运行下述命令:
tar zxvf unixODBC-2.2.1.tar.gz cd unixODBC-2.2.1 ./configure --prefix=/usr/local/unixODBC-2.2.1 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc make make install

安装成功后,unixODBC 所需的头文件都被安装到了/usr/inlucde 下,编译好的库文件 安装到了/usr/lib 下,与 unixODBC 相关的可执行文件安装到了/usr/bin 下,配置文件放 到了/etc 下。 方法二: 下载 rpm 包进行安装,我们这里以 Red Hat 7.3 为例: unixODBC-2.2.0-5 RPM for i386(安装包及源码包) ( ftp://speakeasy.rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/unixODBC2.2.0-5.i386.rpm、 ftp://ftp.rpmfind.net/linux/redhat/7.3/en/os/i386/SRPMS/unixODBC-2.2.0-5.src.rpm) unixODBC-devel-2.2.0-5 RPM for i386 ( ftp://speakeasy.rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/unixODBCdevel-2.2.0-5.i386.rpm) 直接将 unixODBC-2.2.0-5.i386.rpm 和 unixODBC-devel-2.2.0-5.i386.rpm 装入系统就 可以了,命令如下:
rpm -ivh unixODBC-2.2.0-5.i386.rpm rpm -ivh unixODBC-devel-2.2.0-5.i386.rpm

安装好以后,所需的各个部分与上面所列的位置相同。

回页首

Linux/Unix 下 ODBC 的配置
运行 ODBCConfig 程序(在/usr/bin 下),如下图: 图一:ODBCConfig 主窗口

和 Windows 下的 ODBC 设置窗口是不是很像?我想大家都能看懂吧。 第一步:安装数据库的 ODBC 驱动程序 Drivers 这一栏中用来设置数据库的驱动程序,点击 Add 按钮,会出现下图: 图二:ODBCConfig Driver Properties 窗口

Name 一栏填入数据库驱动的名称,Description 是数据库驱动的描述,Driver 是用来选 择数据库驱动程序的,Setup 是用来选择数据库驱动安装程序的,如果你是按照上述安 装方法安装的,这些程序都放在/usr/lib 下,下面是数据库驱动程序的列表:

数据库 TXT NNTP MiniSQL PostgreSQL MySQL Sybase/MS SQL Oracle
注释:

数据库驱动程序 libodbctxt.so libnn.so libodbcmini.so libodbcpsql.so (注释) (注释) (注释)

数据库驱动安装程序 libodbctxtS.so libodbcnnS.so libodbcminiS.so libodbcpsqlS.so libodbcmyS.so libtdsS.so liboraodbcS.so

MySQL、Sybase/MS SQL 和 Oracle 的数据库驱动可以在下列网址找到: MySQL Sybase/MS SQL Oracle http://www.unixodbc.org/myodbc.html http://www.freetds.org http://www.easysoft.org

MySQL 的驱动程序 MyODBC-2.50.39-4 RPM for i386 以及源码包: ftp://speakeasy.rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/MyODBC-2.50 .39-4.i386.rpm ftp://ftp.redhat.com/pub/redhat/linux/7.3/en/os/i386/SRPMS/MyODBC-2.50.39-4.src.r pm

选择好驱动程序之后,点击"√"保存退出。 第二步:设置 DSN DSN 分为 User DSN、System DSN 和 File DSN 三种,我们以 System DSN 为例。选 中 System DSN 一栏以后,点击 Add…按钮就会见到下图: 图三:创建 DSN 选择数据库驱动

列表中会列出你已经安装好的数据库驱动程序, 我这里只装了 MySQL 和 PostgreSQL, 然后选择你所要使用的驱动程序,然后点击 OK 就会出现下图: 图四:DSN 的设置

我这里使用的是 MySQL 的数据库驱动,不同的数据库,这个窗口的内容会有所不同。 Name 是数据源的名称,Description 是描述,Server 可以选择服务器,如果本机启动 了 MySQL 就可以选择 localhost,如果 Port 和 Socket 有特殊要求,再根据实际情况进 行修改,Database 是用来选择数据库的,下拉菜单不一定包含所有的数据库,你可以 把自己已经创建好的数据库名称填写在这里。都配置好之后,点击"√"保存退出。 这样 Linux/Unix 下的 ODBC 数据源就已经设置好了,大家还可以在 ODBCConfig 程序 的 Status 栏中查看 ODBC 的使用情况,在 Advanced 栏中设置是否做日志或者启动连 接池,在 About 栏中,有一个 Linux/Unix ODBC 的示意图,在 Credits 按钮中可以看到 所有开发者的名字的列表。 ODBCConfig 程序中所有有关数据库驱动程序的信息被放 在 odbcinst.ini(在/etc 下)文件中,有关 DSN 的信息被放在 odbc.ini(在/etc 下)文 件中,大家有兴趣的话,可以自己去观察一下。 第三步:使用 DataManager 程序浏览数据库 运行 DataManager 程序之后就可以查看 Drivers、System DSN 和 User DSN 这几项内 容,,在浏览数据库的时候,可以在右面的 SQL 栏中输入 SQL 语句,然后点击人形按 钮就可以运行 SQL 语句,运行结果会在 Results 一栏中显示出来,具体情况可以见下 图: 图五:使用 DataManager 浏览数据库

第四步:使用 isql 程序查看数据库 unixODBC 还提供了命令台下查看数据库的程序,这就是 isql,用法如下:

isql DSN [UID [PWD]] [options] DSN UID PWD Options: -b -dx -w -c --version 批处理,没有提示符的模式 设置列之间的分隔符为 x 将查询结果输出为 HTML 格式 第一行输出列名 输出 isql 的版本号 数据源名称 用户 ID 用户密码

回页首

Linux/Unix 下 ODBC 的编程
1、使用 unixODBC 提供的 ODBC API 进行编程: 在进行编程之前,我们来看一下 ODBC API 中的常用数据类型与我们在 C 语言中使用 的数据类型的对应关系:

类型标识符 SQL_C_CHAR SQL_C_SSHORT SQL_C_USHORT SQL_C_SLONG SQL_C_FLOAT SQL_C_DOUBLE SQL_C_BINARY

ODBC 数据类型 SQLCHAR * SQLSMALLINT SQLUSMALLINT SQLINTEGER SQLREAL SQLDOUBLE, SQLFLOAT SQLCHAR *

C 数据类型 unsigned char * short int unsigned short int long int float double unsigned char * struct tagDATE_STRUCT {SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; } DATE_STRUCT; struct tagTIME_STRUCT {SQLUSMALLINT

SQL_C_TYPE_DATE SQL_DATE_STRUCT

SQL_C_TYPE_TIME SQL_TIME_STRUCT

类型标识符

ODBC 数据类型

C 数据类型 hour; SQLUSMALLINT minute; SQLUSMALLINT second; } TIME_STRUCT;

我们这里使用的数据库名称为 test(DSN),这个 DSN 使用的用户名是 root,密码为 空,表的名称是 web,字段情况如下:

字段名 id name size

数据类型 integer char(40) integer

第一:设定 ODBC 环境句柄并设置参数 首先我们需要声明一个 ODBC 环境句柄(SQLHENV),它可以用来获得有关的 ODBC 环境信息,我们需要调用 SQLAllocHandle ( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &V_OD_Env )来获得这个句柄,V_OD_Env 就是要分配的 SQLHENV 类型的环境句柄。 分配好句柄之后, 你给它需要设定所使用的 ODBC 版本, 你可以调用 SQLSetEnvAttr ( V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0 ),SQL_ATTR_ODBC_VERSION 是存放你定义的 ODBC 版本号的变量,SQL_OV_ODBC3 则说明你的程序使用的是 ODBC 3.0。 第二:设定连接句柄并设置超时参数 我们需要声明一个连接句柄(SQLHDBC),用来存放数据库连接信息的,调用 SQLAllocHandle ( SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc )获得连接句柄, V_OD_hdbc 就是要分配的 SQLHDBC 类型的连接句柄。分配好之后,我们可以调用 SQLSetConnectAttr ( V_OD_hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER *)5, 0 ) 来设定连接超时参数。 第三:连接数据库 调用 SQLConnect ( V_OD_hdbc, (SQLCHAR*) "Test", SQL_NTS, (SQLCHAR*) "root", SQL_NTS, (SQLCHAR*) "", SQL_NTS )连接我前面提到的数据库, 需要设定三个参数, 就是数据库名称、 用户名和密码 (因为我的数据库密码为空, 所以这里的密码也为空) , 后面的 SQL_NTS 的位置应该写入这些参数的长度,如果写的是 SQL_NTS 就是让 SQLConnect 来决定参数的长度。

第四:分配 SQL 语句的句柄并进行查询: 需要声明一个 SQL 语句的句柄(SQLHSTMT),用来存放 SQL 语句信息的,调用 SQLAllocHandle ( SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt )来获得这个句 柄,V_OD_hstmt 就是我们要分配的 SQLHSTMT 类型的 SQL 语句句柄。 我们的查询语句是:
SELECT name, id FROM web ORDER BY id

执行这条查询语句之后,查询结果可能有很多行,但每行只有两列,分别对应 name 和 id,它们的数据类型为 integer 和 char*,在 ODBC 中的数据类型标识符为 SQL_C_ULONG 和 SQL_C_CHAR。 我们需要先声明这样的两个变量来存贮查询结果:
SQLINTEGER char V_OD_id; V_OD_buffer[200];

然后我们需要使用 SQLBindCol 函数把查询结果和我们定义的变量进行绑定:
SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR, &V_OD_buffer,150,&V_OD_err); SQLBindCol(V_OD_hstmt,2,SQL_C_ULONG,&V_OD_id,150,&V_OD_err);

这里的 V_OD_err 是用来存放错误信息编号的变量,类型也是 SQLINTEGER。 接下来,我们调用 SQLExecDirect 来进行查询:
SQLExecDirect ( V_OD_hstmt, "SELECT dtname,iduser FROM web order by iduser", SQL_NTS );

我们可以用 SQLNumResultCols ( V_OD_hstmt, &V_OD_colanz ) 来获得结果的列数, 也可以用 SQLRowCount( V_OD_hstmt, &V_OD_rowanz )来获得结果的条数, V_OD_colanz 和 V_OD_rowanz 分别存储相应的结果,类型分别为 SQLSMALLINT 和 SQLINTEGER。 在读取结果之前,我们需要调用 SQLFetch ( V_OD_hstmt )语句,这个语句可以用来获 得第一条结果也可以用来都下一条,有点像 next 的感觉。然后我们就可以在 V_OD_id 和 V_OD_buffer 里面获得每条记录的结果了。 第五:关于关闭连接和释放句柄 关闭数据库的连接,调用 SQLDisconnect ( V_OD_hdbc )就可以了,但在关闭数据库之 前需要先释放 SQL 语句的句柄,而且在关闭数据库之后应该释放连接句柄和 ODBC 环 境句柄,语句如下(按正常的顺序):
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); SQLDisconnect(V_OD_hdbc);

SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);

第六:关于上述情况中的错误信息处理 我们需要定义两个变量:
long V_OD_erg; V_OD_err;

SQLINTEGER

SQLAllocHandle、 SQLSetEnvAttr、 SQLSetConnectAttr、 SQLConnect、 SQLExecDirect、 SQLNumResultCols 和 SQLRowCount 的调用结果都可以用 V_OD_erg 来存储, V_OD_err 可以获得 SQLBindCol 中的错误信息。 第七:获得本机的 DSN 信息 我们可以在声明 SQLHENV 句柄之后,使用 SQLDataSources 函数来获得本机的 DSN 信息。程序如下:
void OD_ListDSN(void) { char short int l_dsn[100],l_desc[100]; l_len1,l_len2,l_next;

l_next=SQL_FETCH_FIRST; while( SQLDataSources(V_OD_Env,l_next,l_dsn, sizeof(l_dsn), &l_len1, l_desc, sizeof(l_desc), &l_len2) == SQL_SUCCESS) { printf("Server=(%s) Beschreibung=(%s)\n",l_dsn,l_desc); l_next=SQL_FETCH_NEXT; } }

l_next 变量是用来指定我们所要获得的 DSN 的类别:

SQL_FETCH_FIRST

设定 SQLDataSources()函数找到第一个可用的数据 源(可以是 User DSN,也可以是 Systerm DSN) 设定 SQLDataSources()函数找到第一个 User DSN

SQL_FETCH_FIRST_USER

SQL_FETCH_FIRST_SYSTEM 设定 SQLDataSources()函数找到第一个 System DSN

SQL_FETCH_FIRST

设定 SQLDataSources()函数找到第一个可用的数据 源(可以是 User DSN,也可以是 Systerm DSN) 找到下一个数据源,至于数据源类型则要根据前面的 定义

SQL_FETCH_NEXT

到这里,我们在 Unix 的 C 语言下面进行 ODBC 编程已经讲完,上述 ODBC API 需要 引用以下几个头文件(这些文件已经安装到/usr/include 下了):
#include <sql.h> #include <sqlext.h> #include <sqltypes.h>

另外如果大家使用 GTK 进行编程, 由于到目前为止 GTK 还没有加入专门处理数据库的 部件,所以大家可以在 GTK 中调用上述的 ODBC API 即可。 这里附上例程供大家参考学习:
/* odbc.c testing unixODBC */ #include <stdlib.h> #include <stdio.h> #include <odbc/sql.h> #include <odbc/sqlext.h> #include <odbc/sqltypes.h> SQLHENV long SQLHDBC char V_OD_Env; V_OD_erg; // Handle ODBC environment // result of functions // Handle connection // Status SQL

V_OD_hdbc; V_OD_stat[10];

SQLINTEGER SQLSMALLINT char

V_OD_err,V_OD_rowanz,V_OD_id; V_OD_mlen,V_OD_colanz; V_OD_msg[200],V_OD_buffer[200];

int main(int argc,char *argv[]) { // 1. allocate Environment handle and register version V_OD_erg=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env);

if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error AllocHandle\n"); exit(0); } V_OD_erg=SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error SetEnv\n"); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } // 2. allocate connection handle, set timeout V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error AllocHDB %d\n",V_OD_erg); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } SQLSetConnectAttr(V_OD_hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER *)5, 0); // 3. Connect to the datasource "web" V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "Test", SQL_NTS, (SQLCHAR*) "root", SQL_NTS, (SQLCHAR*) "", SQL_NTS); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error SQLConnect %d\n",V_OD_erg); SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, V_OD_stat, &V_OD_err,V_OD_msg,100,&V_OD_mlen); printf("%s (%d)\n",V_OD_msg,V_OD_err); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } printf("Connected !\n");

V_OD_erg=SQLAllocHandle(SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Fehler im AllocStatement %d\n",V_OD_erg); SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, V_OD_stat,&V_OD_err,V_OD_msg,100,&V_OD_mlen); printf("%s (%d)\n",V_OD_msg,V_OD_err); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR, &V_OD_buffer,150,&V_OD_err); SQLBindCol(V_OD_hstmt,2,SQL_C_ULONG,&V_OD_id,150,&V_OD_err);

V_OD_erg=SQLExecDirect(V_OD_hstmt,"SELECT dtname,iduser FROM web order by iduser",SQL_NTS); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error in Select %d\n",V_OD_erg); SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, V_OD_stat,&V_OD_err,V_OD_msg,100,&V_OD_mlen); printf("%s (%d)\n",V_OD_msg,V_OD_err); SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } V_OD_erg=SQLNumResultCols(V_OD_hstmt,&V_OD_colanz); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); SQLDisconnect(V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); }

printf("Number of Columns %d\n",V_OD_colanz); V_OD_erg=SQLRowCount(V_OD_hstmt,&V_OD_rowanz); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Number of RowCount %d\n",V_OD_erg); SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); SQLDisconnect(V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } printf("Number of Rows %d\n",V_OD_rowanz); V_OD_erg=SQLFetch(V_OD_hstmt); while(V_OD_erg != SQL_NO_DATA) { printf("Result: %d %s\n",V_OD_id,V_OD_buffer); V_OD_erg=SQLFetch(V_OD_hstmt); } ;

SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); SQLDisconnect(V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); return(0); }

2.QT 下进行 ODBC 编程 QT 3.0 提供了 Data Table、Data Browser 和 Data View 三个与数据库相关的控件。你 可以在 QT 的 Project 设置你要连接的数据库,Driver 一栏中选择 QODBC3 即可,其它 选项你一看就明白了。上述的三个数据库控件的使用方法可以参见 QT 中相应文档,也 很好使用的。



相关文章:
linux下的obdc
订阅 本文主要内容是介绍 ODBC 的简单原理, 以及如何在 Linux/Unix 下进行 ODBC安装配置与 编程。 一、 ODBC 原理 ??? ODBC 是 Open Database Connect...
linux下连接mysql配置
linux下连接mysql配置_计算机软件及应用_IT/计算机_专业资料。linux下 用otl ...安装 unixODBC 解压 tar xzf unixODBC-2.2.14.tar.gz 进入解压目录 Cd ...
Linux系统odbc配置实现Datastage8.x连接mssqlserver数据库
Linux系统odbc配置实现Datastage8.x连接mssqlserver数据库_计算机软件及应用_IT/...(Tikanga) Datastage 安装路径: 安装路径: /opt/IBM/InformationServer/ Data...
Linux下,unixODBC连接Oracle数据库(完整版)
Linux下,unixODBC连接Oracle数据库(完整版) - CentOS 64-bit 下 unixODBC-2.3.2 连接 oracle-xe-11.2.0-1.0x86_64 un...
Linux_WMB7.0上面配置ODBC
Linux_WMB7.0上面配置ODBC_计算机硬件及网络_IT/计算机_专业资料。Linux_WMB7.0 ...48页 1下载券 Linux Unix下ODBC安装... 5页 免费喜欢此文档的还喜欢 ...
linux下连接sqlserver配置及otl编程
linux下连接sqlserver配置及otl编程 - 1. 需要的包 unixODBC 源码包 unixODBC-2.2.14.tar.gz 下载地址 http://www.unixodbc...
linux下连接postgresql配置
linux下连接postgresql配置 - 1. 需要的包 unixODBC 源码包 unixODBC-2.2.14.tar.gz linux 下的 postgresql 的 ODBC 驱动...
linux下连接mysql配置
linux下连接mysql配置 - 1. 需要的包 unixODBC 源码包 unixODBC-2.2.14.tar.gz mysql 驱动 mysql-connector-odbc-5.1.6...
vmware vcenter 配置 (详细安装步骤)_图文
ODBC---系统 DSN---添加 完成、确定 挂载 Vcenter5.1 iso 一般安装选第一...文档贡献者 temp3linlinux 贡献于2013-12-07 1/2 相关文档推荐 ...
Oracle 11g在Linux下的安装
Oracle 11g在Linux下安装_计算机软件及应用_IT/计算机...[100%] 1:unixODBC-devel ### [100...如果数据库在安装时报错: 重新配置用户 Oracle 的环境变量: ...
更多相关标签: