SQL Server只能在windows上运行, 在windows可以很轻松编译QODBC连接sqlserver数据库, 如何在linux连接sqlserver数据库. QT文档推荐用unixODBC来编译linux上ODBC驱动.
一. 编译unixODBC
wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.2.tar.gz tar -xzvf unixODBC-2.3.2.tar.gz cd unixODBC-2.3.2 ./configure ./make
二. 编译ODBC插件
2.1 进入QT源码后编译,编译完成后会在当前目录下产生 libqsqlodbc.so
cd $QTDIR/src/plugins/sqldrivers/odbc qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc" make
2.2 如果直接指定unixODBC源码目录("INCLUDEPATH+=/home/scada/unixODBC-2.3.2/include" "LIBS+=-L/home/scada/unixODBC-2.3.2/lib -lodbc")编译插件时,会出现下面的错误:
cannot convert parameter from 'sqlinteger *' to 'sqllen *', unixodbc_conf.h: No such file or directory
所以一定要先安装unixODBC, 才开始编译ODBC驱动
2.3 测试
这下驱动也有了,随便写个代码测试, 发现怎么都不能正常连接, 报错: Can't open lib 'SQL SERVER' : file not found QODBC3: Unable to connect
谷歌发现, 还需要安装FreeTDS,那个才是真正的驱动,unixODBC主要是用来编译插件的
三. 编译安装freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz cd freetds-0.9.1 ./configure --prefix=/usr/local/freetds make install
四. 配置freetds
编译完成后,还得配置freetds相关参数才能运行, 这ODBC插件未免也太鸡肋了吧. 没办法 ,继续接着干 ...
4.1 配置 /usr/local/freetds/etc/freetds.conf
sudo vi /usr/local/freetds/etc/freetds.conf
#A typical Microsoft server
[testdsn] # SQL Server数据源名称,可以任意取有意义的名称
host=192.168.10.22 # 数据库主机
port=1344 #数据库监听端口
4.2 tsql工具测试数据库连接
运行 /usr/local/freetds/bin/tsql,
tsql –S 你的DSN的名称 –U 数据库服务器连接用户名 –P 用户名对应的密码 –D 使用的数据库的名称
数据源名称与配置文件一致: tsql -S testdsn -U sa -P sa -D test
五. 测试ODBC插件
5.1 配置 /usr/local/unixODBC/etc/odbcinst.ini
[FREETDS] Description=freetds driver Driver=/usr/local/freetds/lib/libtdsodbc.so #指定TDS驱动路径 Trace=yes TraceFile=/tmp/odbc.log # 启用ODBC日志记录
5.2 配置 /usr/local/unixODBC/etc/odbc.ini
[testdsn] # 数据源名称 Driver=FREETDS # 指向odbcinst.ini的驱动配置 Description=MSSQL Server Servername=testdsn # 数据源名称 Database=sqlscada #数据库名称
5.3 测试运行
qDebug()<<QSqlDatabase::drivers(); // 建立连接 QSqlDatabase db=QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("testdsn"); db.setPort(3304); db.setUserName("sa"); db.setPassword("sa"); if(!db.open()) { qDebug("=== %s",qPrintable(db.lastError().text())); }else { qDebug("==== ok"); } // 查询表auth_test QSqlQuery query(db); QString sql="select age from auth_test where id=:id"; query.prepare(sql); query.bindValue(":id",28); query.exec(); if(query.next()) { int age=query.value(0).toInt(); qDebug("Age is %d",age); }
运行结果:
上述截图发明,已经正常连接到数据库, 但是无法正常查询. 原来这取决于配置TDS版本,将TDS协议版本设置8.0即可
配置 /usr/local/freetds/etc/freetds.conf
[testdsn] tds version=8.0 #将默认的7.0改成8.0
再运行:
相关推荐
unixODBC+freeTDS移植.txt
linux下oracle通过unixODBC连接MySQL linux下oracle通过unixODBC连接MySQL
在linux下操作sqlerver 通过在linux下 安装unixODBC 和FreeTDS,从而可以操作sqlserver 就是otl编程中的odbc
在Mac上使用python来连接Sybase, 需要配置FreeTDS、UnixODBC,这里介绍相关配置过程,亲测有效
包含unixODBC-2.2.11-7.1.i386.rpm和unixODBC-devel-2.2.11-7.1.i386.rpm
unixODBC-2.3.1-14.el7.x86_64.rpm
本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL、Oracle、SQL Server数据库。 其中包括以下几个软件的安装及配置: unixODBC FreeTDS pyodbc cx_Oracle 欢迎转载...
unixODBC是一个来连接数据库的组件。 ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问DBMS
qt-sql-odbc-prog-example ==================== 作者:William.L 电子邮件: SlideShare: ://www.slideshare.net/wiliwe/ 目的 示例代码:###### Linux上Qt ODBC数据库访问的使用说明######
ODBC11 sqlserver client for linux ODBC11 sqlserver client for linux
unixODBC是一个来连接数据库的组件,提供了一种标准的API(应用程序编程接口)方法来访问DBMS(Database Management System)。
UnixODBC是一个用于Unix操作系统的ODBC(开放式数据库连接)驱动程序。最新版本的UnixODBC2.3.11提供了更多的功能和改进,包括更好的性能和更好的稳定性。如果您想使用最新版本的UnixODBC2.3.11,以下是一些安装和...
unixODBC-2.3.9安装包
unixODBC-devel-2.2.11-7.1.i386.rpm
安装unixODBC Redhat 6上通过rpm包安装unixODBC rpm –ivh unixODBC-2.2.14-11.el6.x86_64.rpm rpm –ivh unixODBC-devel-2.2.14-11.el6.x86_64.rpm
libaio-devel-0.3.106-3.2.i386.rpm,libaio-devel-0.3.106-3.2.x86_64.rpm,sysstat-7.0.2-3.el5.x86_64.rpm,unixODBC-devel-2.2.11-7.1.i386.rpm,unixODBC-2.2.11-7.1.i386.rpm,unixODBC-2.2.11-7.1.x86_64.rpm...
unixODBC-devel.rpm
目前支持的数据库有Cubrid、FreeTDS / Microsoft SQL Server / Sybase、Firebird/Interbase 6、IBM DB2、IBM Informix Dynamic Server、MySQL 3.x/4.x/5.x、Oracle Call Interface、ODBC v3 (IBM DB2, unixODBC and ...
unixODBC安装说明 用于unixODBC安装说明。。 。。。。。。
oracle依赖包 unixODBC-devel