最近在写一个项目,需要用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();
}
你这个要在windows下才行吧,而且要装access######不是吧,为什么php就可以?######
看你的描述,你是不是直接在IDE里调试启动测试的?如果是那样,会导致QApplication::applicationDirPath()得到的结果是调试环境的路径,而非程序所在位置路径。
你直接把db文件的路径写成绝对路径再测试下?
######绝对路径也试过了,不行 T_T版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。