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

xiaoyin0805 发布于 2015/06/20 09:21
阅读 827
收藏 0

Serverless 架构就不要服务器了?>>>

最近在写一个项目,需要用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")


加载中
0
hehuim
hehuim
你这个要在windows下才行吧,而且要装access
xiaoyin0805
xiaoyin0805
不是吧,为什么php就可以?
0
Toxsch
Toxsch

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

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

xiaoyin0805
xiaoyin0805
绝对路径也试过了,不行 T_T
返回顶部
顶部