linux下访问sqlserver数据库 ,ODBC+freetds 完美配置
(2015-01-30 17:08:53)
标签:
it |
一、unixODBC
unixODBC是一个可以让你在Unix/Linux系统下使用ODBC(Open Database Connectivity,开放数据库互连)来连接数据库的组件。本文安装unixODBC与下面的Freetds主要是为了isee索引擎可以在linux系统下使用ODBC来连接数据。
下载源码包
- cd unixODBC-2.3.2
-
配置 安装路径
- ./configure --prefix=/usr/local/unixODBC
- 编译 ,安装,
-
make
-
make install
- 在/usr/local/unixODBC 下 安装成功
- 二、编译QT的ODBC驱动插件
-
- 下载QT源码:http://pan.baidu.com/s/1qW3BAEC
-
- 解压后进入:QTDIR/src/plugins/sqldriver/odbc/
-
- qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc" odbc.pro(此 qmake 是linux下的 qt,区别 交叉编译的 qmake)
-
- 编译完成后:将libqslqodbc.so 拷贝到QT的安装目录下的plugins/sqldriver里面
-
如果qt文件夹
找不到,还有个简单的办法(需要 虚拟机,或者主机联网操作) -
-
apt-get install libqt4-sql-odbc
dpkg -L libqt4-sql-odbc
-
-
在qtcreator
创建 控制台应用,写下面测试程序, -
注: 在 工程文件 xxx.pro
第一行加上 QT += core sql 不然 不能找到头文件 sqldatabase #include
#include
#include
#include
#include
-
#include
-
-
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv); qDebug()<<QSqlDatabase::drivers(); // 建立连接 QSqlDatabase db=QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("testdsn"); db.setPort(1433); db.setUserName("root"); db.setPassword("123456"); if(!db.open()) { qDebug("=== %s",qPrintable(db.lastError().text())); }else { qDebug("==== ok"); } -
return a.exec(); } -
-
测试 此时会有下面错误
Can't open lib 'SQL SERVER' : file not found QODBC3: Unable to connect - 安装freetds
二、QT的ODBC驱动
下载:http://pan.baidu.com/s/1o60XNQi
- cd freetds-0.9.1
-
./configure --prefix=/usr/local/freetds
--with-unixodbc=/usr/local/unixODBC/
--with-tdsver=7.1 --enable-msdblib -
make
- make install
-
(prefix 配置安装路径,--with-unixodbc 关联odbc 驱动, --enable-msdblib 使能
Mssql数据库
--7.1 tds 版本) -
搞定上面的 就成功一大半了,接下来再配置三个文件,
-
freetds.conf
,,, odbc.ini ,,,, odbcinst.ini -
1
配置 /usr/local/freetds/etc/freetds.conf vi /usr/local/freetds/etc/freetds.conf #A typical Microsoft server
[testdsn] # SQL Server数据源名称,可以任意取有意义的名称
host=192.168.1.101 # 数据库主机
port=1433 #数据库监听端口
-
2配置 /usr/local/unixODBC/etc/odbcinst.ini
-
[FREETDS]
Description = freetds driver
Driver = /usr/local/freetds/lib/libtdsodbc.so
Trace=yes
TraceFile=/tmp/odbc.log