关于QODBC的连接问题

Arkist 2011-11-01 11:51:37
本人开发环境windows 7 64bit + vs2010 + Qt4.8尝试使用QODBC连接SQL Server,问题很奇特,数据库已经打开了,但是执行SQL语句时,又提示Driver not loaded,很是困惑,请教是何种原因
代码如下:
QStringList ssss = QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "test");
db.setHostName("arkis_pc");
QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=arkis_pc;DATABASE=Arkist_test");
db.setDatabaseName(dsn);
db.setUserName("sa");
db.setPassword("test");
bool ok = db.open();
if(ok)
{
QMessageBox::information(this,"database","OK,database is opened");
QSqlQuery query;
QString s1,s2,s3,s4;
bool success = query.exec("select * from test");
if (!success)
{
QMessageBox::information(this,"database",query.lastError().text());
}
while(query.next())
{
s1 =query.value(0).toString();
ui.lineEdit_1->setText(s1);
s2 =query.value(1).toString();
ui.lineEdit_2->setText(s2);
s3=query.value(2).toString();
ui.lineEdit_3->setText(s3);
s4 =query.value(3).toString();
ui.lineEdit_4->setText(s4);
QMessageBox::information(this,"database","next recorder");
}

//写数据库
QString INSERT = QString("INSERT INTO test(id, time, position, people)"
"VALUES (:id, :time, :position, :people)");

query.prepare(INSERT);
query.bindValue(0,QString("123") );
query.bindValue(1,QString("1234") );
query.bindValue(2,QString("12345") );
query.bindValue(3,QString("123456") );

bool sss = query.exec();
}
else
QMessageBox::information(this,"database","database Failture");
db.close();


调试结果:ssss [3]("QSQLITE","QODBC3","QODBC") QStringList
先提示:database is opened
然后提示:Driver not loaded Driver not loaded


输出窗口提示:
线程 'Win32 线程' (0x1354) 已退出,返回值为 0 (0x0)。
QSqlQuery::exec: database not open
线程 'Win32 线程' (0xb74) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x1070) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x1148) 已退出,返回值为 0 (0x0)。
QSqlQuery::prepare: database not open


...全文
240 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arkist 2011-11-02
  • 打赏
  • 举报
回复
找到答案了,问题在于QSqlQuery query;
改成QSqlQuery query(db);就成功了。
还是不理解,qt manual 上的实例竟然也会有问题
就这样好了 2011-11-02
  • 打赏
  • 举报
回复
Driver not loaded这样的提示说明程序没有办法找到Qt的ODBC驱动,这说明可能你还没有编译这个驱动,也可能是你编译了但是没有放对地方
额,补充一句,这个驱动默认是不会带有的,是需要自己编译的

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧