- QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
-
- //db.setHostName(QString("192.168.1.29\MTIMESQLSERVER"));
- //db.setDatabaseName(QString ("Driver={sql server};server=192.168.1.29\MTIMESQLSERVER;database=MtimeCMS;uid=sa;pwd=sa;"));
- //db.setUserName(QString("sa"));
- //db.setPassword(QString("sa"));
- db.setHostName(QString("127.0.0.1"));
- db.setDatabaseName(QString ("Driver={sql server};server=127.0.0.1;database=MtimeCMS;uid=sa;pwd=sa;"));
- db.setUserName(QString("sa"));
- db.setPassword(QString("sa"));
- bool con =db.open();
- QSqlQuery query("SELECT * FROM news",db);
- bool exec = query.exec();
- QStringList tabelle = db.tables(QSql::Tables);
- QMessageBox::about(parent,"tables",tabelle.join(","));
- QMessageBox::about(parent,"con err",db.lastError().text());
- QMessageBox::about(parent,"query err",query.lastError().text());
开发环境:
1、Qt 4.4.2
2、window 2003 sp2
3、本地/远程机均安装的sql server2005
问题说明:
1、使用demo 里的sqlbrowser上面代码里的连接本地和远程sqlserver均正常
2、使用代码里的本地连接时,连接成功,"tables"能返回库内的表名,但是查询失败,"query err"返回“odbc 驱动程序管理器 函数序列错误 qodbc3 unable to execute statement”
3、使用注释内的远程连接时,连接失败,"con err"返回“Sql Server不存在或访问被拒绝[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).QODBC3 :Unable to connect)”
搜索了一下,相同问题的帖子很多,但是都没有解决,麻烦高手看一下,谢谢。
已解决1、“192.168.1.29\MTIMESQLSERVER” 里的“\”未转义
2、QSqlQuery query("SELECT * FROM news",db) 已经执行了查询,不要再调用exec,具体原因还没来的及查,待会跟进去看看
所以可以改为:
QSqlQuery query("SELECT * FROM news",db);
或者
QSqlQuery query(db);
bool exec = query.exec("SELECT * FROM news");
[ 此帖被viki在2009-04-29 19:20重新编辑 ]