开发者社区> 问答> 正文

苦恼啊!! Ubuntu 下 关于 qt4 连接 Access (.mdb)数据库 问题:报错

最近在写一个项目,需要用QT写入 读取Access(mdb)数据库文件, 可是就是连不上数据库!(其他的读写就更谈不上了),查资料,百度,看帖子等,研究了好几天依然无果! ps : 崩溃!!!

环境: ubuntu 14.04    Qt4.8.6(.../plugins/sqldrivers/ 下的 odbc 也编译过了  -----    -plugin-sql-odbc [整体编译的])

请哪位大侠(师傅),指点一下!

到底是代码错误,还是我的系统 缺少什么配置 ps:关于unixODBC 管理Accesss数据库这方面的我也看了,并且也做了测试,可还是不行,可能是没配置好它的缘故???等待指教!(由于接触qt不到半年,功底浅薄,没有描述到位的,望见谅!)

还有 祝大家  节日玩的开森! (第一次发帖,废话有点没控制)

上代码:

#include<QApplication>

#include<QString> #include<QSqlDatabase> #include<QSqlQuery> #include<QSqlError> #include<QSqlDriver> #include<QDebug> int main(int argc,char *argv[]) { QApplication app(argc,argv);

// qDebug() << QSqlDatabase::drivers(); //("QSQLITE","QMYSQL3","QMYSQL","QODBC3","QODBC") QSqlDatabase db=QSqlDatabase::addDatabase("QODBC"); /* QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setUserName(""); db.setPassword(""); db.setDatabaseName("***");/ //QSqlDatabase db = QSqlDatabase::database(connID,false); // qDebug()<<db.isValid(); //return true

    //QString dsn=QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1").arg(QApplication::applicationDirPath() + "/TestData.mdb");
        //各种试
    QString dsn=QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={Meteorology Access};DBQ=%1").arg(QApplication::applicationDirPath() + "/TestData.mdb");

    //qDebug()<< dsn;
    db.setDatabaseName(dsn);
    //db.setDatabaseName("MDBToolsODBC" + QApplication::applicationDirPath() + "/TestData.mdb");
    //db.setDatabaseName("TestData.mdb");
    if(db.open())
    {
        qDebug()<<"ok";
     /*  QSqlQuery query(db);
        if(query.exec("select name from RunnerName "))
        {
            if(query.next())
            {
                qDebug()<<query.value(0).toString();
            }
        }*/
    }
    else qDebug()<<"false!";
    qDebug() << db.lastError();
    //app.exec();

}



运行结果:  QSqlError(0, "QODBC3: Unable to connect", "[unixODBC][Driver Manager]Can't open lib 'Mirosoft Access Driver (*.mdb)' : file not found")


展开
收起
kun坤 2020-06-06 16:39:03 829 0
1 条回答
写回答
取消 提交回答
  • 你这个要在windows下才行吧,而且要装access######不是吧,为什么php就可以?######

    看你的描述,你是不是直接在IDE里调试启动测试的?如果是那样,会导致QApplication::applicationDirPath()得到的结果是调试环境的路径,而非程序所在位置路径。

    你直接把db文件的路径写成绝对路径再测试下?

    ######绝对路径也试过了,不行 T_T
    2020-06-06 16:39:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载