什么是FreeTDS
简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库!
FreeTDS 是一个开源(如果你喜欢可以称为自由)的程序库,是TDS(表列数据流 )协议的再次实
现。它可以被用在Sybase的db-lib或者ct-lib库。它也包含一个ODBC的库。 允许许多开源的应
用软件比如Perl和PHP(或者你自己的c或C++程序)去连接到Sybase或 Microsoft SQL服务器。
FreeTDS 以源码的形式被发布,几乎可以在任何操作系统上编译。意味着Unix和 类Unix系统(包
括著名的分支如Interix和QNX),还有Win32,VMS,和OSX。如果它不能在你 的系统上编译–并且
你没有使用MS DOS–这也许是一个bug.。
FreeTDS的安装
1.下载freetds-0.63版本(因为0.63版支持中文),点此下载
http://www.ibiblio.org/pub/Linux/ALPHA/freetds/old/0.63/freetds-0.63.tar.gz
2.将其解压到任意目录,进入到解压后的文件夹里。
3.切换到root,配置:
./configure –prefix=/usr/local/freetds –with-tdsver=8.0 –enable-msdblib
解释:–prefix为设置FreeTDS的安装目录,–with-tdsver是设置TDS版本,
–enable-msdblib为是否允许Microsoft数据库函数库
4.make & make install
5.配置环境变量:vim ~/.bashrc向此文件中加入:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib/
关于安装参考:http://linux.chinaunix.net/techdoc/database/2008/10/31/1042291.shtml
或者:http://www.linuxdiyf.com/viewarticle.php?id=109086
FreeTDS的配置
freeTDS 的配置文件,FreeTDS也支持一个旧的配置文件interfaces,但请使用freetds.conf
除非你的环境必须使用interfaces。FreeTDS首先找freetds.conf文件如果没有找到才去找
interfaces文件。
freetds.conf文件默认在/usr/local/freetds/etc目录下,但是可以在configure时配置
sysconfdir选项,这个选项就是freetds.conf文件所存在的目录。
freetds.conf配置文件分为两部分:一是[global]部分,另外一个是[dataserver]部分,其中
[dataserver]对应一个数据库。在golbal中的设置是对全部数据库起作用的,但在dataserver
部分的设置只对自己的数据库起作用,并且可以覆盖全局的设置。例如:
freetds.conf文件:
[global]
tds version = 4.2
[myserver]
host = ntbox.mydomain.com
port = 1433
[myserver2]
host = unixbox.mydomain.com
port = 4000
tds version = 5.0
这个文件中global设置所有数据库使用tds版本为4.2,但在myserver2中使用的版本却是5.0,
如果myserver2中没有这一项,那就是用4.2版本的如myserver。
其配置项解释如下:
tds version: 指明tds协议的版本,连接数据库时使用,如果在环境变量中没有设置
此项,则由此配置决定,协议版本可取4.2,5.0,7.0,8.0。
host: 数据库服务器的主机名或者ip地址。
port: 数据库服务器的监听端口,可以取任何有效的端口值,一般而言Sybase SQL10以前为
1433,10以上用5000,而Sybase SQLAnywhere 7是2638,Microsoft SQL server则用
1433。此配置可以被环境变量中的TDSPORT改写。
initial block size: 此值只能取512的倍数,默认为512,指定了协议块的最大值,
一般不要改变此默认 配置。
dump file: 任何有效的文件名,指明了转储文件的路径并且会打开日志记录。
dump file append: yes或者no,决定是否追加保存到dump file文件中。
timeout:设置处理的最大等待时间。
connect timeout: 设置连接的最大等待时间。
emulate little endian: yes或者no,是否强制大端机使用小端方式与MS Server通信。
client charset: 任何有效的iconv字符集。默认值为ISO-8859-1,使FreeTDS使用
iconv在数据库服务器和用户程序之间转换。
FreeTDS函数
RETCODE dbinit ( void ) :
功能:在你使用这个库之前调用此函数,为多个内部变量申请空间并且读取locales.conf(
/usr/local/freetds/etc目录下)文件决定日期格式。
返回值:SUCCEED (成功),FAIL(失败)
LOGINREC* dblogin ( void ) :
功能:申请LOGINREC结构体。此结构体被传递到dbopen()函数用来创建与数据库的一个连接。
返回值:NULL,没有申请到LOGINREC结构体,否则就是合法的地址。
DBPROCESS * dbopen()
功能:服务器建立一个连接. 传递 LOGINREC 指针和服务器名字
返回值:成功则返回DBPROCESS结构体指针,保存与服务器连接的所有信息
RETCODE dbcmd ( DBPROCESS * dbproc, const char * cmdstring )
功能:填充SQL语句到命令缓冲区,cmdstring 所要填充的SQL语句字符串。
返回值:返回SUCCEED 成功.,FAIL失败,没有足够的内存。
RETCODE dbsqlexec ( DBPROCESS * dbproc )
功能:发送SQL语句到服务器,并等待返回。
返回值:SUCCEED:执行成功,FAIL,失败
FreeTDS使用实例
|