设为首页 收藏本站
查看: 1392|回复: 0

[经验分享] linux Qt连接操作windows sqlserver数据库

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-2 09:04:33 | 显示全部楼层 |阅读模式
suse安装如下几3个软件
1) libqt4-sql-unixODBC - Qt 4 unixODBC plugin
Qt unixODBC plugin to support databases via unixODBC within Qt applications.
4.8.5-5.9.2 这个是版本号

2) unixODBC - ODBC driver manager with some drivers included
UnixODBC aims to provide a complete ODBC solution for the Linux platform. Further drivers can be found at http://www.unixodbc.org/.
0.91-9.1.2

3) libtdsodbc0 - FreeTDS ODBC Driver for unixODBC
The freetds-unixodbc package contains ODBC driver build for unixODBC.
2.3.1-3.1.2

如果只安装1,2会提示如下错误:
error: "[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect"
suse 13.1直接安装上面3个软件包就行了,不用写什么配置文件

需要sqlserver开1433端口, telnet sqlserverip 1433 如果没有错误,代表可以
// IP:200.235.3.63 用户:user1 密码:passwd1 数据库名: test1
    int
main( int argc, char **argv )
{
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug() << "\t" << driver;

    QSqlDatabase db  = QSqlDatabase::addDatabase("QODBC");
    QString dsn = QString("DRIVER={SQL SERVER};SERVER=%1;port=%2;DATABASE=%3;uid=%4;pwd=%5;")
        .arg("200.235.3.63\\SQLEXPRESS")
        .arg(1433)
        .arg("test1")
        .arg("user1")
        .arg("passwd1");

    db.setDatabaseName(dsn);
    if ( db.open() == false )
    {
        //db.removeDatabase();
        qDebug()<<"error:"<<db.lastError().text();
    }
    return 0;
}

其他linux发行版,可用源码安装
源码安装unixODBC
wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.2.tar.gz
如果上面的慢,就用下面命令下载
wget ftp://mirror.ovh.net/gentoo-dist ... ixODBC-2.3.2.tar.gz
tar -xzvf unixODBC-2.3.2.tar.gz  
cd unixODBC-2.3.2  
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install

源码安装freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz  
cd freetds-0.9.1
./configure --prefix=/usr --sysconfdir=/etc --with-tdsver=8.0 --with-unixodbc=/usr
编译
make
查看生成以下.so文件
find ./ -name "*.so*"
./src/ctlib/.libs/libct.so.4
./src/ctlib/.libs/libct.so.4.0.0
./src/ctlib/.libs/libct.so
./src/dblib/.libs/libsybdb.so
./src/dblib/.libs/libsybdb.so.5.0.0
./src/dblib/.libs/libsybdb.so.5
./src/odbc/.libs/libtdsodbc.so.0
./src/odbc/.libs/libtdsodbc.so.0.0.0
./src/odbc/.libs/libtdsodbc.so
安装
sudo make install

手动写配置文件
创建 /etc/odbcinst.ini
内容如下:
[FreeTDS]
Description             = FreeTDS unixODBC Driver
Driver          = /usr/lib/libtdsodbc.so.0
UsageCount              = 1

[SQL Server]
Description             = FreeTDS unixODBC Driver
Driver          = /usr/lib/libtdsodbc.so.0
UsageCount              = 1

测试
tsql -H 200.235.3.66 -p 1433 -U user -P password -D datebaseA
1> select * from tablea
2> go

/etc/freetds.conf
[bike]
  host = 200.235.3.66
  port = 1433
  tds version = 8.0

/etc/odbc.ini
[bike]
#Driver = /usr/lib/libtdsodbc.so
Driver  = SQL Server
Description = sample database
Trace   = Yes
Servername=bike
Database = bicycle

QSqlDatabase db  = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("bike");
db.setUserName("user");
db.setPassword("password");
if ( db.open() == false )
{
    //db.removeDatabase();
    qDebug()<<"error:"<<db.lastError().text();
}
qDebug() << db.tables();

测试
tsql -S bike -U user -P password

用tsql测试如果通了,就表明可以工作了,这时如果Qt写的代码通不了,可能是配置文件写的不对。
fc12用其源中的软件包安装,select命令会挂住,应该是软件版本过低,有bug,源码安装可以解决。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-24242-1-1.html 上篇帖子: JBoss7.1.1 安装配置 下篇帖子: nginx日志格式及自定义日志配置 sqlserver windows linux 数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表