QT连接SQL Server 2008—— QODBC3: Unable to connect----本人亲自测试可行!!!

原文地址::http://blog.sina.com.cn/s/blog_51728d1c0101d5g3.html

相关文章

1、QODBC3:Unable to connect----https://forum.qt.io/topic/66668/qodbc3-unable-to-connect

 

今天在阿里云搞了一个云服务器备用,给它安装了windows server 2008系统和SQL server 2008

然后把调试好的上位机程序拷贝过去,却发现在windows xp和 windows 7都能打开数据库的情况下
在2008却打不开,提示open error 和 QODBC3: Unable to connect
1、dsn配置测试依然可以用,没有报错
2、怀疑是odbc驱动没装,去qt目录下拷贝了剩余的3个dll文件过来,依然不行
3、把dsn的服务器地址改为本地的local,测试能通过就是不能打开
4、在windows xp上把dsn指向阿里云里面装的sql 数据库,发现这样是能操作数据库,程序运行也没问题
 
解决办法:
实在没则了,百度了一下这个问题,发现还真有人碰到这个问题的,如下
按照这个哥们的解决方法,对我这里依然没有用,还是会报错,最后尝试了一下他的另一种方法,却很神奇的连上了,也可以打开数据库了。
 
1、原来我是在odbc里设置了一个系统dsn,取名叫dbdsn,在这里面输入服务器地址,用户名和密码,数据库名等,然后在qt程序里直接使用这个dsn,如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(dbdsn);
 
db.setUserName("sa");
 
db.setPassword("xx");
 
if(!db.open())
 
{
 
    qDebug() << "db open error !!! ";
 
    qDebug()<<db.lastError();
 
      return false;
 
}
return true;

这样的设置在windows xp 和windows 7 32位下运行都没有问题
可以再windows server 2008 下却open失败了

2、改成如下这样就解决问题了
 
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
 
QString dsn=QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=192.168.1.100;DATABASE=xxx");
 
db.setDatabaseName(dsn);
 
//即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤
 
db.setUserName("sa");
 
db.setPassword("xx");
 
if(!db.open())
 
{
 
    qDebug() << "db open error !!! ";
 
    qDebug()<<db.lastError();
 
      return false;
 
}
 
return true;

我就是这样解决掉问题了,记录下来,以免遗忘
供后来者参考
对了我的qt库是4.8.4
用第二种方法就不用去设置dsn了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值