`
tcspecial
  • 浏览: 911295 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

QT unixODBC+freetds连接sqlserver

阅读更多

      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

   再运行:

  

 

  • 大小: 13.5 KB
  • 大小: 19.2 KB
  • 大小: 8.1 KB
0
0
分享到:
评论

相关推荐

    unixODBC+freeTDS移植.txt

    unixODBC+freeTDS移植.txt

    laravel5使用freetds连接sql server的方法

    在本文中,我们将深入探讨如何在Laravel 5框架中使用FreeTDS连接到SQL Server数据库。FreeTDS是一个开源的程序库,它实现了TDS(Tabular Data Stream)协议,使得Linux系统能够与Microsoft SQL Server进行通信。这...

    php(laravel+apache+SQLserver)配置链接SQLserver所需文件

    4. **系统依赖**:在Linux环境中,可能需要安装一些依赖库,如`unixODBC`和`freetds`,它们是连接到SQL Server所需的驱动程序。在Ubuntu上,可以运行以下命令: ``` sudo apt-get install freetds-dev freetds-bin...

    freetds-0.82RC4.tar.gz_FreeTDS_sqlserver

    总的来说,“freetds-0.82RC4.tar.gz_FreeTDS_sqlserver”这个压缩包是为Linux/Unix用户提供连接Windows SQL Server的桥梁,通过ODBC驱动实现了跨平台的数据访问,对于需要在非Windows环境下操作SQL Server的开发者...

    linux操作系统配置ODBC数据源连接SQL Server

    为了使Linux系统能够连接到SQL Server,还需要安装FreeTDS。FreeTDS是一组库,允许程序原生地与Microsoft SQL Server和Sybase数据库通信。从技术角度来看,FreeTDS是一个开源的TDS(Tabular Data Stream)协议实现,...

    Linux下通过odbc连接sqlserver服务器的安装包

    本安装包包含了两个关键组件,它们是连接SQL Server的基石:freetds和unixODBC。 1. **freetds**: freetds是一个开源的库,它实现了对SQL Server和Sybase数据库的TDS(Tabular Data Stream)协议支持。TDS是微软...

    linux 操作sqlserver源码

    本篇文章将深入探讨如何在Linux上建立与SQL Server的连接,主要涉及UnixODBC和FreeTDS这两个关键组件,以及它们在OTL(Open Transaction Library)编程中的作用。 首先,`Linux SQLServer connect`标签表明我们需要...

    linux下连接sqlserver配置及otl编程.docx

    本文详细介绍了在Linux环境中配置连接Microsoft SQL Server数据库的方法,包括所需的包(`unixODBC`和`freetds`)的安装、配置,以及如何使用OTL进行编程。通过遵循这些步骤,可以实现在Linux环境下顺利地与SQL ...

    CentOS系统安装SQLServer教程

    最后,您可以使用`sqlcmd`工具连接到SQL Server: ```bash sqlcmd -S localhost -U SA -P 'YourPassword' ``` 请将`YourPassword`替换为您为SA用户设置的密码。 #### 四、注意事项 - 在执行安装和配置过程中,请...

    在Mac上使用FreeTDS、UnixODBC、pyodbc连接Sybase

    在Mac操作系统上使用Python连接到Sybase数据库,通常需要通过FreeTDS、UnixODBC和pyodbc这三个组件来实现。以下是详细的配置和使用步骤: **1. UnixODBC安装:** UnixODBC是Unix和Linux系统上的一个开放源代码ODBC...

    Django 连接sql server数据库的方法

    如果使用的是Windows系统,ODBC驱动通常会自带安装,如果是Linux,可能需要安装`unixodbc`和`freetds`。 3. 配置Django项目:安装完必要的包之后,接下来是修改项目的配置文件`settings.py`。在`DATABASES`配置字典...

    unixODBC-2.2.11-7.1

    标题“unixODBC-2.2.11-7.1”指的是Unix Open Database Connectivity (unixODBC) 的一个特定版本,即版本2.2.11,发行版7.1。UnixODBC是一个开源的ODBC(Open Database Connectivity)驱动程序管理器,它为Linux和...

    Linux下链接SQL2000完整教程

    在Linux上,FreeTDS使得我们能够连接到运行在不同操作系统上的SQL Server数据库,包括SQL Server 2000。 2. **安装FreeTDS**: 在大多数Linux发行版中,你可以通过包管理器(如apt-get for Debian/Ubuntu或yum for...

    sqlserver_driver

    Microsoft 提供了针对 Linux 的 SQL Server ODBC 驱动,以方便开发者在 Linux 平台上连接到 SQL Server 数据库。 #### 二、安装准备 **2.1 下载所需文件** 在安装之前,需要下载两个压缩包: - `msodbcsql-11.0....

    freetds-0.91.tar.gz

    《FreeTDS:连接SQL Server与Sybase的开源库》 FreeTDS是开源社区开发的一个库,用于在Unix和Linux系统上与Microsoft SQL Server和Sybase数据库进行通信。其名称"FreeTDS"中的"TDS"代表"Tabular Data Stream",这是...

    freetds安装使用

    Freetds 是一个开源项目,旨在提供一套兼容 Microsoft TDS (Tabular Data Stream) 协议的客户端库和工具,允许用户通过 ODBC 技术在 Linux 系统上访问运行于 Windows 系统上的 SQL Server 数据库。本篇文章将详细...

    unixODBC-2.3.0

    在Linux环境下,unixODBC扮演了桥梁的角色,连接应用程序和各种数据库服务器,包括SQL Server。 描述中的“ODBC11 sqlserver client for linux”表明这是一个专为连接到Microsoft SQL Server的ODBC驱动程序,适用于...

    redhat5.2下freetds0.82环境搭建

    在Red Hat 5.2操作系统环境下,安装和配置FreetDS 0.82是一项重要的任务,特别是对于那些需要与Microsoft SQL Server或Sybase数据库进行交互的系统管理员来说。FreetDS是一个开源库,它提供了在Unix和Linux系统上...

Global site tag (gtag.js) - Google Analytics