您好,欢迎访问三七文档
Linux/Unix下ODBC的安装方法一:先下载最新的unixODBC源码包()放到/usr/local下,然后运行下述命令:tarzxvfunixODBC-2.2.1.tar.gzcdunixODBC-2.2.1./configure--prefix=/usr/local/unixODBC-2.2.1--includedir=/usr/include--libdir=/usr/lib-bindir=/usr/bin--sysconfdir=/etcmakemakeinstall安装成功后,unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。方法二:下载rpm包进行安装,我们这里以RedHat7.3为例:unixODBC-2.2.0-5RPMfori386(安装包及源码包)(、)unixODBC-devel-2.2.0-5RPMfori386()直接将unixODBC-2.2.0-5.i386.rpm和unixODBC-devel-2.2.0-5.i386.rpm装入系统就可以了,命令如下:rpm-ivhunixODBC-2.2.0-5.i386.rpmrpm-ivhunixODBC-devel-2.2.0-5.i386.rpm安装好以后,所需的各个部分与上面所列的位置相同。回页首Linux/Unix下ODBC的配置运行ODBCConfig程序(在/usr/bin下),如下图:图一:ODBCConfig主窗口和Windows下的ODBC设置窗口是不是很像?我想大家都能看懂吧。第一步:安装数据库的ODBC驱动程序Drivers这一栏中用来设置数据库的驱动程序,点击Add按钮,会出现下图:图二:ODBCConfigDriverProperties窗口Name一栏填入数据库驱动的名称(自定义),Description是数据库驱动的描述(自定义),Driver是用来选择数据库驱动程序的,Setup是用来选择数据库驱动安装程序的,如果你是按照上述安装方法安装的,这些程序都放在/usr/lib下,下面是数据库驱动程序的列表:数据库数据库驱动程序数据库驱动安装程序TXTlibodbctxt.solibodbctxtS.soNNTPlibnn.solibodbcnnS.soMiniSQLlibodbcmini.solibodbcminiS.soPostgreSQLlibodbcpsql.solibodbcpsqlS.soMySQL(注释)libodbcmyS.soSybase/MSSQL(注释)libtdsS.soOracle(注释)liboraodbcS.so注释:MySQL、Sybase/MSSQL和Oracle的数据库驱动可以在下列网址找到:MySQL://的驱动程序MyODBC-2.50.39-4RPMfori386以及源码包:://ftp.redhat.com/pub/redhat/linux/7.3/en/os/i386/SRPMS/MyODBC-2.50.39-4.src.rpm选择好驱动程序之后,点击√保存退出。第二步:设置DSNDSN分为UserDSN、SystemDSN和FileDSN三种,我们以SystemDSN为例。选中SystemDSN一栏以后,点击Add…按钮就会见到下图:图三:创建DSN选择数据库驱动列表中会列出你已经安装好的数据库驱动程序,我这里只装了postgresql,然后选择你所要使用的驱动程序,然后点击OK就会出现下图:图四:DSN的设置这里使用的是postgresql的数据库驱动,不同的数据库,这个窗口的内容会有所不同。Name是数据源的名称(应用程序里访问数据库时用的就是它,相当于SID),Description是描述,Server可以选择服务器,如果本机启动了postgreslq就可以选择localhost,如果Port和Socket有特殊要求,再根据实际情况进行修改,Database是用来选择数据库的,UserName为数据库用户名称,Password为数据库用户密码。都配置好之后,点击√保存退出。这样Linux/Unix下的ODBC数据源就已经设置好了,大家还可以在ODBCConfig程序的Status栏中查看ODBC的使用情况,在Advanced栏中设置是否做日志或者启动连接池,在About栏中,有一个Linux/UnixODBC的示意图,在Credits按钮中可以看到所有开发者的名字的列表。ODBCConfig程序中所有有关数据库驱动程序的信息被放在odbcinst.ini(在/etc下)文件中,有关DSN的信息被放在odbc.ini(在/etc下)文件中。第三步:使用DataManager程序浏览数据库运行DataManager程序之后就可以查看Drivers、SystemDSN和UserDSN这几项内容,具体情况可以见下图:图五:使用DataManager浏览数据库点击SystemDSN或者UserDSN,会出现下图:此处ID为数据库的名称(常用为switch),PWD为数据库的密码(可不填)。点击OK:第四步:使用isql程序查看数据库unixODBC还提供了命令台下查看数据库的程序,这就是isql,用法如下:isqlDSN[UID[PWD]][options]DSN数据源名称(如果数据源名称有空格,则需要用双引号括起来)UID用户IDPWD用户密码Options:-b批处理,没有提示符的模式-dx设置列之间的分隔符为x-w将查询结果输出为HTML格式-c第一行输出列名--version输出isql的版本号回页首Linux/Unix下ODBC的编程1、使用unixODBC提供的ODBCAPI进行编程:在进行编程之前,我们来看一下ODBCAPI中的常用数据类型与我们在C语言中使用的数据类型的对应关系:类型标识符ODBC数据类型C数据类型SQL_C_CHARSQLCHAR*unsignedchar*SQL_C_SSHORTSQLSMALLINTshortintSQL_C_USHORTSQLUSMALLINTunsignedshortintSQL_C_SLONGSQLINTEGERlongintSQL_C_FLOATSQLREALfloatSQL_C_DOUBLESQLDOUBLE,SQLFLOATdoubleSQL_C_BINARYSQLCHAR*unsignedchar*SQL_C_TYPE_DATESQL_DATE_STRUCTstructtagDATE_STRUCT{SQLSMALLINTyear;SQLUSMALLINTmonth;SQLUSMALLINTday;}DATE_STRUCT;类型标识符ODBC数据类型C数据类型SQL_C_TYPE_TIMESQL_TIME_STRUCTstructtagTIME_STRUCT{SQLUSMALLINThour;SQLUSMALLINTminute;SQLUSMALLINTsecond;}TIME_STRUCT;我们这里使用的数据库名称为test(DSN),这个DSN使用的用户名是root,密码为空,表的名称是web,字段情况如下:字段名数据类型idintegernamechar(40)sizeinteger第一:设定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则说明你的程序使用的是ODBC3.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语句句柄。我们的查询语句是:SELECTname,idFROMwebORDERBYid执行这条查询语句之后,查询结果可能有很多行,但每行只有两列,分别对应name和id,它们的数据类型为integer和char*,在ODBC中的数据类型标识符为SQL_C_ULONG和SQL_C_CHAR。我们需要先声明这样的两个变量来存贮查询结果:SQLINTEGERV_OD_id;charV_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,SELECTdtname,iduserFR
本文标题:odbc安装文档
链接地址:https://www.777doc.com/doc-2890062 .html