• 5826阅读
  • 3回复

qt 使用odbc连接sql server,无法查出任何内容 [复制链接]

上一主题 下一主题
离线btptboy
 

只看楼主 正序阅读 楼主  发表于: 2012-06-20
请看我的代码:
bool createConnection(){    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3");    QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=WR\\SQLEXPRESS;DATABASE=web");    db.setDatabaseName(dsn);    db.setUserName("username");    db.setPassword("password");    return db.open();}
bool canQuery() {   QSqlQuery query; // 换成 QSqlQuery query(QSqlDatabase::database())亦不行   query.exec("select * from host");   if(query.isActive()) {       return true;   } else {       QMessageBox::information(0, "query","failed");       return false;   }}这两个方法在同一个类中,已经测试过,数据连接成功,并且query 的 isActive()返回true,lastError().test()没有内容,但query.size()为-1,也就是说没有查到内容,可我的表中命名有内容啊,郁闷了很久,希望哪位好心人能帮帮忙。
我思故我在
离线btptboy

只看该作者 3楼 发表于: 2012-06-21
已经解决了,QSqlQuery一定要传入打开的数据库,否则会提示database not open ,再者,出现size为-1是因为有些数据库不支持返回影响的行数,我就在这上面纠结了很久,因为sql server就不支持,所以,虽然size为-1,其实是有内容的,不得不承认我被误导了。
但让我很疑惑的是为什么QSqlQuery一定要传入database呢,我在连接mysql后就没有传,一样能查,纠结啊。
我思故我在
离线XChinux

只看该作者 2楼 发表于: 2012-06-20
为什么用QODBC3?  用QODBC不行吗?
SQLEXPRESS,是MSSQL2005?2008?数据库驱动应该用SQL Native Client或者SQL Server Native Client 10.0吧?这依据于你安装的驱动是哪个。用SQL Server似乎不太合适。

你试验一下将用户名和密码放到 DSN字符串中看看
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线btptboy

只看该作者 1楼 发表于: 2012-06-20
本来排版好好的,发布后就这样了,抱歉,反正问题是query 检查isActive()为true,isValid()为false,但没有内容,
query.size()为-1
我思故我在
快速回复
限100 字节
 
上一个 下一个