Linux_Unix下ODBC的安装

Linux_Unix下ODBC的安装
Linux_Unix下ODBC的安装

中国 [ 选择] 使用条款

dW 全部内容

首页 产品 服务与解决方案 支持与下载

个性化服务

developerWorks 中国

> Linux >

Linux/Unix 下ODBC

的安装、配置与编程

齐亮

2002 年 7 月

本文主要内容是介绍ODBC 的简单原理,以及如何在Linux/Unix 下进行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 下进行数据库编程的时候却不得不根据不同的数据库来选择特有的AP 程,一旦数据库发生了改变,所有与这些API 相关的程序都必须进行修改。其实在Linux/Unix 下现在也有了自己的ODBC ,可以使我们的数据库编程Windows 平台下一样简单。

下面我们开始介绍Linux/Unix 下的ODBC :

Linux/Unix 下ODBC 的安装

方法一:

先下载最新的unixODBC 源码包( https://www.360docs.net/doc/9218515887.html,/unixODBC-2.2.1.tar.gz )放到/usr/local 下,然后运行下述命令:

安装成功后,unixODBC 所需的头文件都被安装到了/usr/inlucde 下,编译好的库文件安装到了/usr/lib 下,与unixODBC 相关的可执行文件安装到了下,配置文件放到了/etc 下。

方法二:

下载rpm 包进行安装,我们这里以Red Hat 7.3为例: unixODBC-2.2.0-5 RPM for i386(安装包及源码包)

( ftp://https://www.360docs.net/doc/9218515887.html,/linux/redhat/7.3/en/os/i386/RedHat/RPMS/unixODBC-2.2.0-5.i386.rpm 、 ftp://https://www.360docs.net/doc/9218515887.html,/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://https://www.360docs.net/doc/9218515887.html,/linux/redhat/7.3/en/os/i386/RedHat/RPMS/unixODBC-devel-2.2.0-5.i386.rpm ) 直接将unixODBC-2.2.0-5.i386.rpm 和unixODBC-devel-2.2.0-5.i386.rpm 装入系统就可以了,命令如下:

内容:

ODBC 原理Linux/Unix 下ODBC Linux/Unix 下ODBC Linux/Unix 下ODBC 参考资料 关于作者

对本文的评价订阅:developerWorks 时

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 --sysconf make

make install

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 libodbctxt.so libodbctxtS.so

NNTP libnn.so libodbcnnS.so

MiniSQL libodbcmini.so libodbcminiS.so

PostgreSQL libodbcpsql.so libodbcpsqlS.so

MySQL(注释)libodbcmyS.so

Sybase/MS SQL(注释)libtdsS.so

注释:

MySQL 、Sybase/MS SQL 和Oracle 的数据库驱动可以在下列网址找到: MySQL https://www.360docs.net/doc/9218515887.html,/myodbc.html Sybase/MS SQL https://www.360docs.net/doc/9218515887.html, Oracle https://www.360docs.net/doc/9218515887.html,

MySQL 的驱动程序MyODBC-2.50.39-4 RPM for i386以及源码包:

ftp://https://www.360docs.net/doc/9218515887.html,/linux/redhat/7.3/en/os/i386/RedHat/RPMS/MyODBC-2.50.39-4.i386.rpm ftp://https://www.360docs.net/doc/9218515887.html,/pub/redhat/linux/7.3/en/os/i386/SRPMS/MyODBC-2.50.39-4.src.rpm 选择好驱动程序之后,点击"√"保存退出。

第二步:设置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 下)文件中,大家有兴趣的话,可以自己去观察

Oracle

(注释)liboraodbcS.so

第三步:使用DataManager 程序浏览数据库

运行DataManager 程序之后就可以查看Drivers 、System DSN 和User DSN 这几项内容,,在浏览数据库的时候,可以在右面的SQL 栏中输入SQL 语点击人形按钮就可以运行SQL 语句,运行结果会在Results 一栏中显示出来,具体情况可以见下图: 图五:使用DataManager 浏览数据库

第四步:使用isql 程序查看数据库

unixODBC 还提供了命令台下查看数据库的程序,这就是isql ,用法如下: isql DSN [UID [PWD]] [options]

DSN 数据源名称 UID 用户ID PWD 用户密码

Options :

-b 批处理,没有提示符的模式 -dx 设置列之间的分隔符为x -w 将查询结果输出为HTML 格式 -c 第一行输出列名 --version 输出isql 的版本号

Linux/Unix 下ODBC 的编程

1、使用unixODBC 提供的ODBC API 进行编程:

在进行编程之前,我们来看一下ODBC API 中的常用数据类型与我们在C 语言中使用的数据类型的对应关系: 我们这里使用的数据库名称为test (DSN ),这个DSN 使用的用户名是root ,密码为空,表的名称是web ,字段情况如下:

类型标识符 ODBC 数据类型 C 数据类型 SQL_C_CHAR SQLCHAR *unsigned char *SQL_C_SSHORT SQLSMALLINT short int

SQL_C_USHORT SQLUSMALLINT unsigned short int SQL_C_SLONG SQLINTEGER long int SQL_C_FLOAT SQLREAL float SQL_C_DOUBLE SQLDOUBLE, SQLFLOAT double SQL_C_BINARY

SQLCHAR *

unsigned char *

SQL_C_TYPE_DATE SQL_DATE_STRUCT struct tagDATE_STRUCT {SQLSMALLINT

year; SQLUSMALLINT month;

SQLUSMALLINT day; } DATE_STRUCT;SQL_C_TYPE_TIME SQL_TIME_STRUCT

struct tagTIME_STRUCT {SQLUSMALLINT hour; SQLUSMALLINT minute; SQLUSMALLINT second; } TIME_STRUCT;

字段名数据类型

id integer

name char(40)

size integer

第一:设定ODBC环境句柄并设置参数

首先我们需要声明一个ODBC环境句柄(SQLHENV),它可以用来获得有关的ODBC环境信息,我们需要调用SQLAllocHandle ( SQL_HANDLE_ 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_VERS 你定义的ODBC版本号的变量,SQL_OV_ODBC3则说明你的程序使用的是ODBC 3.0。

第二:设定连接句柄并设置超时参数

我们需要声明一个连接句柄(SQLHDBC),用来存放数据库连接信息的,调用SQLAllocHandle ( SQL_HANDLE_DBC, V_OD_Env, &V_OD_hd 接句柄,V_OD_hdbc就是要分配的SQLHDBC类型的连接句柄。分配好之后,我们可以调用SQLSetConnectAttr ( V_OD_hdbc, SQL_LOGIN_TIM (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_获得这个句柄,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 V_OD_id;

char 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);

第六:关于上述情况中的错误信息处理

我们需要定义两个变量:

SQLAllocHandle 、SQLSetEnvAttr 、SQLSetConnectAttr 、SQLConnect 、SQLExecDirect 、SQLNumResultCols 和SQLRowCount 的调用结果都可V_OD_erg 来存储,V_OD_err 可以获得SQLBindCol 中的错误信息。

第七:获得本机的DSN 信息

我们可以在声明SQLHENV 句柄之后,使用SQLDataSources 函数来获得本机的DSN 信息。程序如下:

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

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

另外如果大家使用GTK 进行编程,由于到目前为止GTK 还没有加入专门处理数据库的部件,所以大家可以在GTK 中调用上述的ODBC API 即可。 这里附上例程供大家参考学习:

long V_OD_erg;

SQLINTEGER V_OD_err;

void OD_ListDSN(void) {

char l_dsn[100],l_desc[100]; short int 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; } }

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

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

SQL_FETCH_NEXT

找到下一个数据源,至于数据源类型则要根据前面的定义

#include #include #include

/* odbc.c

testing unixODBC */

#include #include #include #include #include

SQLHENV V_OD_Env; // Handle ODBC environment long V_OD_erg; // result of functions SQLHDBC V_OD_hdbc; // Handle connection

char V_OD_stat[10]; // Status SQL SQLINTEGER V_OD_err,V_OD_rowanz,V_OD_id; SQLSMALLINT V_OD_mlen,V_OD_colanz; char 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))

{

SetEnv\n");

printf("Error

V_OD_Env);

SQLFreeHandle(SQL_HANDLE_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

%d\n",V_OD_erg);

AllocHDB

V_OD_Env);

SQLFreeHandle(SQL_HANDLE_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))

{

%d\n",V_OD_erg);

printf("Error

SQLConnect

V_OD_hdbc,1,

SQLGetDiagRec(SQL_HANDLE_DBC,

V_OD_stat, &V_OD_err,V_OD_msg,100,&V_OD_mlen);

(%d)\n",V_OD_msg,V_OD_err);

printf("%s

V_OD_Env);

SQLFreeHandle(SQL_HANDLE_ENV,

exit(0);

}

!\n");

printf("Connected

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_stat,&V_OD_err,V_OD_msg,100,&V_OD_mlen);

V_OD_hdbc,1,

(%d)\n",V_OD_msg,V_OD_err);

printf("%s

V_OD_Env);

SQLFreeHandle(SQL_HANDLE_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 一栏中选择即可,其它选项你一看就明白了。上述的三个数据库控件的使用方法可以参见QT 中相应文档,也很好使用的。

参考资料

1.微软的ODBC 主页: https://www.360docs.net/doc/9218515887.html,/data/odbc/;

2.UnixODBC 的主页: https://www.360docs.net/doc/9218515887.html, ;

3.FreeODBC 的主页: https://www.360docs.net/doc/9218515887.html,/FreeODBC/;

4.EasySoft 的主页: https://www.360docs.net/doc/9218515887.html, ;

5.

TrollTech 的QT 3.0文档主页: https://www.360docs.net/doc/9218515887.html,/3.0/。

关于作者

齐亮,有幸于2001年参与Happy Linux 3.0的研发工作,对Linux 情有独钟,现在从事Linux/Windows 跨平台应用的开发,欢迎您通过电子邮件 cavendish@https://www.360docs.net/doc/9218515887.html, 跟他联系,希望能与更多的朋友交流关于Linux 方面的知识。 对本文的评价

您对这篇文章的看法如何?

建议?

太差! (1)需提高

(2)一般;尚可 (3)好文章 (4)真棒!(5)

提交反馈意见

developerWorks 中国 > Linux > 关于 IBM

隐私条约

联系 IBM

配置sql server ODBC 数据源

配置sql server ODBC 数据源 1.配置sql server ODBC 数据源 在2003操作系统下配置sql server ODBC 数据源步骤,辅助调试 步骤: 1)第一步 控制面板下选择管理工具--- ODBC 数据源,双击图标单击添加 2)第二步 在系统DSN选项上,单击添加按钮,出现创建数据源对话框,选择SQL server 3)第三步

单击完成按钮,出现创建到sql serve 数据源。如图所示 输入数据源名称、数据源描述和SQL server 所在的服务器名称或者IP 地址。服务器名称也是sql server 所在的服务器名称,也可以是IP地址。单击下一步 4)第四步 选择登陆sql server 时的身份验证方式。并输入登陆sql server 时所用到的用户名和密码,如下图所示 用户名和密码是在sql 建立的。在sql server 数据库中选择安全性--->登陆如图所示

关键点:点击“客户端配置”,可以反复在“named pipes(P)”和“TCP/IP”调试 A、软件并不用ODBC作为数据源访问数据库,安装时有时会碰到网络版连接不上数据 库的情况,telnet指令测试成功! B、“TCP/IP(T)”数据源配置失败的情况下,可以在尝试“named pipes(P)”配置数据源, 基本可以故障解决。 故障原因:操作系统,在日常使用中,发生改动导致。 5)第五步 默认数据库是master,因测试连接,所以不用更改数据库。然后单击下一步

6)第六步 按默认设置,单击完成按钮。 7)第七步 这里给出了数据库连接的摘要信息,如果想测试一下是否能够连接到数据库,可以单击“测试数据源(T)”,会出现测试结果,如下图所示

注册表添加ODBC数据源

上个帖子说了如何通过管理工具手动配置ODBC数据源,今天我们来看下如何通过注册表来添加ODBC数据源。 首先我们先看下[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI]中注册表项 这里面包含我们已经设置过的数据源名称,点击sdu_lab看看里面是如何写的

这个格式不会写啊,肿么办呢?我们可以将注册表导出,然后进行修改 我们编辑导出的注册表内容,看看啥样的。虽然格式很清楚,还是加点注释好了。Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\sdulab] //数据源名称"Driver"="C:\\Program Files\\MySQL\\Connector ODBC 3.51\\myodbc3.dll" //驱动

"SERVER"="219.231.143.216" // 服务器 "UID"="xdt" //用户名 "PWD"="xdt" //密码(完全可见,想看密码的童鞋学下注册表吧)"DATABASE"="db_test" //数据库名称 "PORT"="3306" //数据库开放端口号,这个不用改 比方说,我们要添加一个名称为sdulab_test的数据源,那么我们应该这样写Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\sdulab_test] "Driver"="C:\\Program Files\\MySQL\\Connector ODBC 3.51\\myodbc3.dll" "SERVER"="219.231.143.216" "UID"="xdt" "PWD"="xdt" "DATABASE"="db_test" "PORT"="3306"

综合版ODBC配置方法

综合版ODBC数据源配置方法 支点洗浴管理软件在发布的时候秉承绿色软件的原则,我们给客户的只是一个文件夹,用户可以将软件拷贝到任何盘符的任何文件夹下,然后将玫瑰花图标的可执行文件创建一个快捷方式到桌面上就可以了,但是在运行程序之前,我们必需要求安装好数据库服务器,这个过程需要专业的工程师或者在我们的指导下完成,同时我们还要求配置ODBC连接,配置好ODBC以后我们就可以运行支点收银管理系统了,支点系统ODBC的名称是固定的,只能是“cash2000odbc”,下面介绍的就是支点收银管理系统ODBC的详细的配置方法: 1) 在电脑“控制面板”里面的“管理工具”中双击“数 据源(ODBC)”,在“系统DSN”标签中点击“添加”按 钮,要注意的是必需是“系统DSN”页面,如果已经存在 cash2000odbc的ODBC连接,就双击cash2000odbc进行配置 就可以了,如果是空的就点击添加按钮。

2) 点击添加后将出现如右画面选择SQL Server数据源(一般是 最后一项),点击“完成”按钮 3) 点击完成在名称处,输入“cash2000odbc”;在服务器下拉框处选 择数据库所在的服务器,如果是单机或服务器上安装,可选 择“(local)”,也可以输入“.”或本机名称,同时也可以输入服务器的IP地址,对于客户端,则应选择相应的数据库服务器或者服务器对应的IP地址,点击“下一步”按钮继续;

4) 选择数据库认证方式,建议使用数据库ID和密码的认证方式, 在“登录ID处”输入“sa”,“ 密码”处输入sa的密码,如果安装时没有密码,则为空,(一般情况下均为空);如果使用网络登陆ID的WINDOWS NT验证,则需要所有客户端均要可以得到SQL数据库服务器认证,通俗的说就是在服务器上创建一个网络用户,各工作站也建立一个同样的用户名,然后用这个用

学生信息管理系统(MFC、VC、ODBC数据库)

用MFC做的一个学生信息管理系统,有增加、删除、排序、筛选功能,系统通过ODBC方式连接数据库。 由于文库不支持RAR,故需要完整的程序以及数据库可以联系俺,希望对大家有帮助。 下面是简单的报告: C++程序设计报告 设计题目:学生信息管理系统 班级: 姓名: 学号: 指导教师: 时间:2011年12月13日 目录 1.设计目标…………………………………………………………… 2.设计内容…………………………………………………………… 3.设计思想…………………………………………………………… 4.设计说明…………………………………………………………… 5.设计步骤…………………………………………………………… 6.软件演示…………………………………………………………… 7.感想总结…………………………………………………………… 学生信息管理系统(MFC) 1.设计目标 了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编

写Windows应用程序的基本模式与用ODBC方式访问数据库。 2.设计内容 以学生信息管理系统为例,通过对简单应用软件系统的设计,编制、调试,实现简单的增加、删除、排序等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。 3. 设计思想 基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现相关功能。生成简单的应用软件。 4.设计说明 (1)包含的功能有:查看、增加、删除、排序、筛选等功能。 (2)通过access创建数据库并通过OD方式访问数据库。 (3)编辑界面上的不同按钮,创建消息映射,以完成相关的各种操作。5.设计步骤 1、创建数据库: 打开access,并创建一个新表“student”,输入相关内容,选择类型。并创建主键后。完成后保存。 2、添加ODBC数据源 打开“ODBC数据源管理器” 添加 选择

ODBC数据源配置详细说明

ODBC数据源介绍 ODBC数据源是一组数据的位置,可以使用ODBC 驱动程序访问该位置。也是一种存储的定义,包含ODBC 应用程序连接到数据源所需的全部连接信息。开放数据库互连(ODBC)是Microsoft引进的一种早期数据库接口技术。它实际上是ADO的前身。Microsoft 引进这种技术的一个主要原因是,以非语言专用的方式,提供给程序员一种访问数据库内容的简单方法。 下面以Window2000下的ODBC管理器为例,介绍一下每一页的用途: 1、用户DSN:ODBC用户数据源存贮了如何与指定数据库提供者连接的信息。只对当前用户可见,而且只能用于当前机器上。这里的当前机器是只这个配置只对当前的机器有效,而不是说只能配置本机上的数据库。它可以配置局域网中另一台机器上的数据库的。 2、系统DSN: ODBC系统数据源存贮了如何指定数据库提供者连接的信息。系统数据源对当前机器上的所有用户都是可见的,包括NT服务。也就是说在这里配置的数据源,只要是这台机器的用户都可以访问。 3、文件DSN:ODBC文件数据源允许用户连接数据提供者。文件DSN可以由安装了相同驱动程序的用户共享。这是界于用户DSN和系统DSN之间的一种共享情况。 4、驱动程序:这页列出了本机上所有安装的数据库驱动程序。里面列举了每个驱动程序的名称,版本,提供商公司,驱动程序文件名,以及安装日期。 5、跟踪:ODBC跟踪允许创建调用ODBC的日志,提供给技术人员查看。里面可设定日志的路径和文件名。技术人员通过这里面的信息可以看到本机上所有的数据库访问的时间,用户,以及出错信息等情况。也可以通过这个辅助调试应用程序,可以启动Visual Studio 的分析器,来进行ODBC的跟踪。 6、连接池:连接池允许应用程序重用原来打开的的连接句柄,这样可以节省到服务器的往返过程。 7、关于:最后这一页列出了所有的ODBC的核心文件。 ODBC数据源配置 以系统DSN配置为例进行说明。 第一步:“控件面板→管理工具→数据源(ODBC)”打开数据源管理器,切换到“系统DSN”选项卡。如下图:

VC++6.0在程序中自动添加ODBC数据源

2009-02-23 01:19:46| 分类:VC++|字号订阅 // ST.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "ST.h" #include "STDlg.h" #include // #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif typedef BOOL (WINAPI

*SQLCONFIGDATASOURCE_FUNCTION)(HWND,WORD,LPCSTR,LPCSTR );//另加的 ///////////////////////////////////////////////////////////////////////////// // CSTApp BEGIN_MESSAGE_MAP(CSTApp, CWinApp) //{{AFX_MSG_MAP(CSTApp) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSTApp construction CSTApp::CSTApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CSTApp object

Win64位系统手工配置ODBC数据源教程

Windows7 64位系统ODBC数据源配置方法 注意以下所说的步骤是在安装好SQL2000或者端内有绿色SQL的情况下,已经在查询分析器内一键建立并还原好数据库之后才进行的,请不要跳步骤进行,否则会出错。一键端可直接操作。(win7系统架设传奇3前请将UAC账户权限调至最低) Windows7 64位系统(包含Windows Vista 64位系统)不能直接用服务端内的ODBC数据源一键导入。64位系统请不要点击该文件,否则会出现不必要的麻烦,必须手动配置,配置方法如下: 1.首先来到C:\Windows\SysWOW64文件夹,打开odbcad3 2.exe 2.在用户DSN选项卡上点击“添加”。

下拉选项框,看到最末尾,选取“SQL Server”,并点击完成 3.首先建立第一个数据库(这里要建立的数据库数量可以根据自己端设置而定。,为了方便说明和理解,这里只选取第一个account数据库建立为例子,另外5个的配置方法完全一样,名字变更即可。不要忘了其他的5个数据库配置)

名称填上account 服务器直接输入(local),注意不要下拉选服务器,有可能会卡住,直接输入字符就可以了。如图所示,请注意看, 4.上面的输入完毕后,点下一步,如图所示来配置,

再点击下一步:修改默认数据库为account。(与创立数据库名一致)如图 点下一步测试数据源看下连接是是否成功,成功后就直接点完成就可以了。剩下2个都如此操作。

用户DSN配置6个数据库完毕后,同样的方法,配置系统DSN,用1.4c插件的端为例,名字均一样分别是account、Game1、manage、conlog、Herocommon1、Kingforeiserverbasedata 请勿忘记配置,否则游戏数据网关会报错 For Damon

采用ODBC连接获取统计数据方法介绍

采用ODBC连接获取统计数据方法介绍目前获取统计数据的方法主要有三种:1、BO,2、交换机直接吐报告,3、各地自编外挂程序。下面介绍一种获取统计数据的新方式—ODBC连接法。 ODBC连接可使外挂的客户端程序直接访问SYBASE数据库,我们通常使用EXCEL作为客户端,数据库数据可随意以EXCEL表格形式展现眼前。 使用ODBC连接获取统计数据有以下特点: 1.避免了采集数据内容相对固定的弱点,SYBASE数据库是所有中间 程序使用的原始库,内容最丰富,使用者可按个人优化风格与需要作各种COUNTER查询。 2.可随选任意时段、任意实体的数据,根据自己需要选择关心的局 部数据,如仅对单一小区有兴趣,可只读取该小区的相关各项统计,有利于投诉热点地区的持续关注。也可选择全网数据作分析比较。 3.能自主在各OBJTYPE中组合自己需要的数据,便于分析,更可以 自编SQL查询语句作简单查询,避免每次重新输入。 ODBC连接方式的配置安装 1、安装SYBASE ODBC

只需按照默认方式安装,跳过其中的可能出错过程。末尾无须对ODBC作CONFIG,直接EXIT。 2、安装SYBASE CLIENT

在上图所示界面输入文件SERIA中的序列码,按照默认方式安装,无需作任何改动。该程序可咨询OSS网管。 3、配置SYBASE CLIENT数据库连接 ?在刚安装的SYBASE FOR WINDOWSNT中打开SQLEDIT,INPUT SERVER NAME框中任取一个适当的服务器名字,如无锡服务器 可取GMWXOMC1,点击ADD。 ?右边SERVICE TYPE框中拉选QUERY,PLATFORM选择NT/WINDOWS95,NET-LIBRARY DRIVER选择NLWNSCK。CONNECTION INFORMATION/NETWORK ADDRESS框中输入本地SYBASE服务器 的IP地址与端口号,IP地址与端口号请咨询本地OSS网管员,端口号默认为5025,输入格式如下:10.39.140.10,5025,中

如何一步步配置ORACLE_ODBC数据源

如何正确配置ORACLE_ODBC数据源?解决你头疼的问题 想必我们在配置SQLServer数据源时,总是得心应手,但是在配置ORACLE ODBC数据源时,却总是错误百出,如此是我们甚至放弃这种让人难以接受的做法。其实,我想说,这都是我们这样一些曾经做过新手的人所面临的问题。今天参加完美林电子的面试由其中一道orale_jdbc的编程题使我突然间又怀念起了那些年,我们一起学过的java,那时候我们才是真真的菜鸟。今天我就把如何安装ORACLE_ODBC的完整方法的文字表述和贴图分享给大家,希望和我一样有过这份不愉快经历的新手们,轻松学习java吧! 步骤1:点击windows开始按钮→控制面板→管理工具→ODBC数据源(32bit)如图一: 图一:管理工具中ODBC数据源 步骤2:单机ODBC数据源(32bit),得到界面如图二: 图二:数据源配置列表栏 这是数据源配置列表栏,可以看到我已经配置了两个数据源分别是32bit的oracle数据源和64bit的SQLSever数据源。要配置数据源必须先选择DNS我们选择系统DNS→点击添 加得到如图三界面:

图三:数据源驱动列表 滚动滑动条可以找到OracleinXE选项,点击完成得到图四界面: 图四:ORACLE_ODBC配置界面 在这里大家要注意两点:第一:TNS Service Name 要在下拉列表框中选择,如图我选择

的的是XE。为什么这样选择呢?这里注意了,当我们安装完ORACLE10g或其他版本后,在我们的主机上此ORACLE会生成一个ORACLE_HOME作为其在此主机上的标识,由于我安装的ORACLE是ORACLEXE版本的所以他的ORACLE_HOME即是XE,我将ORACLE的服务打开,大家可以看到如图五: 图五:ORACLEXE的服务 由图可以看出:我的ORACLE主程序的服务是:OracleService XE这个服务中的XE即时ORACLE_HOME.同时大家也可以看到其他的所有服务都带有XE标识。注意我所说这么多就是让大家选中TNS Service Name的值。第二:我再将图四贴一遍如图六: 图六:ORACLE_ODBC配置界面(部分) 注意图中的UserID我当时就是不知道如何选择,后来我才知道这个是选择登陆ORACLE数据库的用户名通ORACLE会默认生成两个用户:system和sysas sysdba这里我们要选择system. 当然如果用户在PL/SQL中创建了新账户则完全可以运用其账户。一切配置好后我们看图四,然后点击Test Connection进行测试数据库链接。但是错误出来了: 图七:测试ORACLE_ODBC报错 怎么回事儿呢?哪儿错了呢?不好意思,刚才我关闭了如图五中的OracleXETNSListener服务,所以它报错:无监听程序,好吧那我们启动这个服务,但是不好意思,又出错了:无法启动OracleXETNSListener,相关依赖不存在,或者其他问题.如何解决这个问题呢?简单打开我们的Oracle安装路径,我的是: E:\Softwares\Oracle\app\oracle\product\10.2.0\server,好长的路径其实只需要打开到product 文件夹搜索:tnsnames.ORA和listener.ORA文件修改其中的host(表示关联到你的本机ip地址)令其等于你的电脑的名称即可以:查找你的主机名称:右键单击我的电脑/计算机 可以看

相关主题
相关文档
最新文档