QT读取access失败,在输出窗口里面写着:QSqlDatabase: QODBC driver not
loaded,到安装路径的plugins\Sqldriver里面没有QODB相关文件。正好有个人跟我遇到一样的情况,描述如下:
在QT中用ODBC驱动连接ACCESS数据库时,总是会提示driver not loaded!
经代码测试未发现QODBC的驱动。
源程序如下,调试环境WINDOWSXP + Qt 4.7.3 for desktop - MinGw 4.4 :
QSqlDatabase db =
QSqlDatabase::addDatabase("QODBC");
qDebug() <<
db.lastError();
QString dsn = QString("DRIVER={Microsoft Access
Driver (*.mdb)};FIL={MS Access};DBQ=DB.mdb");
db.setDatabaseName(dsn);
if(!db.open()) { //此处每次都会打开失败
QMessageBox::critical(0, QObject::tr("Database
Error"),db.lastError().text());
return false;
}
else
{
QMessageBox::information(0,"hello world","Open
Database success!",QMessageBox::Ok);
}
上面也写了解决方法:
还是写出解决办法,供以后跟我一样的菜鸟们参考:
1、安装QT Libraries 4.7.3 for windows(到NOKIA
QT官网去下载qt-win-opensource-4.7.3-mingw.exe)
2、安装完成后,在目录C:\Qt\4.7.3\plugins\sqldrivers下找到ODBC的4个驱动文件;
3、在个人QT工程的目标程序目录下建立文件夹sqldrivers,并将这4个驱动文件放进去。(本人所存放路径D:\DEMO\demo-build-desktop\debug\sqldrivers\,供大家参考,注意:文件夹名字一定要是sqldrivers)
参考这个方法,我进行如下操作:
1.卸载之前的QT版本,如果不想卸载,注意先将VS2008里德QT项中QT
Option中旧版本version删掉;
2.安装qt-win-opensource-4.8.0-vs2008.exe,该版本含有与ODBC相关的qsqlodbc4.dll、qsqlodbc4.lib、qsqlodbcd4.lib、qsqlodbcd4.dll这四个驱动。
3.注意,不同版本的QT的.ui文件不一定相同。我之前版本是4.4.3,改到4.8.0版本相差有点远,不要直接加载旧的.ui文件,最好是建立新的.ui文件,再把过去的控件粘贴过去(注意修改控件名称),或者改变代码。
OK!~