qt在链接Access数据库时遇到的问题:电脑64位,安装的32位office软件,调用access数据库出现"[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect"问题,找到ODBC数据源管理工具,方法:控制面板->管理工具->数据源(ODBC),打开如图所示
点开MS Access Database,若能点开则说明数据源没有问题,否则会提示它会提示没有安装相应驱动。这时候重新安装
链接:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
64位安装AccessDatabaseEngine_X64.exe,安装成功再次点开数据源无提示即成功。若不行,重新安装office(我就是把32位换成了64位)。
还有就是驱动问题,QT里给的例子中用的DRIVER={Microsoft Access Driver (*.mdb)},而系统默认的数据源配置驱动为:Microsoft Access Driver (*.mdb, *.accdb),最好的办法是先查看本机数据源中access对应的驱动,根据驱动名称写相应的数据源。
最后需要注意的是数据库路径问题,我刚开始用的"\"和"/"会出问题,最会换成"\\"才可以用
最后附上代码
QSqlDatabase db;
db = db.addDatabase("QODBC");
QString path("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=E:\\test.mdb");
db.setDatabaseName(path);
if (db.open())
{
// success!
qDebug() << "Success";
}
else{
qDebug() << "Errror!";
qDebug() << db.lastError().text();
db.close();
}