linux机器连接sql,在linux下连接MS SQL Server

在工作中需要在Linux服务器上访问MS SQL Server数据库,我马上就想到了适用ODBC接口进行实现,毕竟它的移植性更好。

首先需要选一种支持MS SQL Server的ODBC驱动,商业的不能考虑,只能考虑开源的,于是,FreeTDS进入了视野,从官网(http://www.freetds.org/)上下载了它的0.91版本的包,在安装它之前需要安装libiconv,这个库用于进行编码转换。

开始安装!

1,从unixODBC官网(www.unixodbc.org)下载2.3.2版本

./configure --enable-gui=no ; make ; sudo make install

2,安装libiconv,./configure ; make ; sudo make install

3,安装freetds,./configure --with-tdsver=7.0 --with-unixodbc=/usr/local --with-libiconv-prefix=/usr/local --enable-msdblib

说明,with-tdsver用于指定TDS协议版本,7.0就能支持目前新版本的MS SQL Server,with-unixodbc用于指定 unixODBC的安装路径前缀。

开始配置!

在/usr/local/etc下有三个关键的配置文件,freetds.conf,odbcinst.ini,odbc.ini,分别先说明了三个配置文件的作用,freetds.conf是用于定义具体的驱动信息,包括数据库地址、端口、协议版本、编码等,odbcinst.ini用于定义ODBC驱动,odbc.ini用于定义ODBC数据源。

freetds.conf中定义如下:

[FTDSMSSQLDB]

host = 192.168.0.1

port = 1433

tds version = 7.0

instance = TKVSDB

client charset = GBK   ;客户端的编码,即你的程序中实际使用的字符编码,freetds在提交数据时候会自动转换为服务器编码

initial block size = 1024

connect timeout = 60

timeout = 60

odbcinst.ini中定义如下:

[SQLServer]

Description = v0.91 with protocol v7.0

Driver = /usr/local/lib/libtdsodbc.so

Setup = /usr/local/lib/libtds.so

UsageCount = 1

CPTimeout = 5

CPReuse = 5

FileUsage = 1

odbc.ini中定义如下:

[TESTDSN]

Driver = SQLServer

Description = MS SQL Server

Servername = FTDSMSSQLDB

Database = TOMDB  ;数据库名

颜色标注关联。

在程序中,就可以使用下面的连接串进行访问,如下:UID=sa;PWD=12345678;DSN=TESTDSN。

在实际使用中,我采用OTL(对ODBC的访问接口进行了封装)的API,这样能使代码更加简单一些,在引用otlv4.h头文件前需要加入下面几个宏,

#define OTL_ODBC_MSSQL_2008 // Compile OTL 4/ODBC, MS SQL 2005

#define OTL_FREETDS_ODBC_WORKAROUNDS // Enable the FreeTDS / ODBC workarounds for MS SQL

#define OTL_ODBC // Compile OTL 4/ODBC. Uncomment this when used with MS SQL 7.0/ 2000

#define OTL_ODBC_UNIX // Compile OTL 4 / ODBC. Uncomment this when used in Linux / Unix

#define OTL_STL // Turn on STL features

这样,就可以在代码中使用otl_connect进行访问了,简单的实例代码如下:

const char * dsn_string("UID=sa;PWD=12345678;DSN=TESTDSN");

otl_connect m_conn;

m_conn.rlogon(dsn_string,1);

后面就可以进行各种数据库操作了,详细请参见OTL的网站http://otl.sourceforge.net/。(当然,你需要设计一个自己的连接池,频繁的打开关闭连接是很耗时的)

希望对大家有帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值