• 4993阅读
  • 4回复

QT连接SQL 问题 [复制链接]

上一主题 下一主题
离线zaq2010
 

只看楼主 倒序阅读 楼主  发表于: 2013-01-11
本地连接没有任何问题
远程连接就出现下面问题




连接代码如下
  1. QString SQL(QString("DRIVER={%6};SERVER=%1;"
  2.                         "PORT=%2;DATABASE=%3;UID=%4;PWD=%5")
  3.                     .arg(Server)
  4.                     .arg(Port)
  5.                     .arg(DbName)
  6.                     .arg(UserName)
  7.                     .arg(PassWord)
  8.                     .arg(MSSQLDriver));
  9.     DB = new QSqlDatabase(QSqlDatabase::addDatabase("QODBC3"));
  10.     DB->setDatabaseName(SQL);

离线XChinux

只看该作者 1楼 发表于: 2013-01-11
不要写Port。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zaq2010

只看该作者 2楼 发表于: 2013-01-11
回 1楼(XChinux) 的帖子
不写Port的话 目标数据库 端口不一定是1433啊。。
离线XChinux

只看该作者 3楼 发表于: 2013-01-11
看MSSQL自己的服务去获取端口的,不需要指定。

SERVER=%1
这个%1实际上应该是写服务名+实例名,比如:

BJP-X200\SQLEXPRESS

这就是我的机器名BJP-X200上的SQLEXPRESS实例。如果不写实例名而只有主机名,则是指连接默认实例(这个实例名是在安装数据库创建实例时指定的)。简单的说,你在微软提供的SQL官方查询工具上列出来的server列表(或者在odbcad32里添加SQL Server的数据源时连接MSSQL服务器时下拉框列出来的server列表)里怎么写,你就怎么写上面的%1,主机名和实例名中间用"\"分隔开。


你要连接远程MSSQL,一是要确定远程服务器确实开放了TCP连接,外部有权限可进入,二就是我上面所说的实例名要正确,通过它来动态获取Port。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zaq2010

只看该作者 4楼 发表于: 2013-01-12
回 3楼(XChinux) 的帖子
找到问题了。。
是MSSQLDriver 那段代码有问题。。
只能获取到SQL Server Native Client 10.0
而不能获取系统真是的 值
快速回复
限100 字节
 
上一个 下一个