以下这段代码是用来在
数据库文件还不存在的时候,用来创建sqlite数据库的。
这段代码在
Windows下工作的好好的,在Mac带Qt开发环境的机子也运行的好好的,可是做成dmg文件以后,拷贝到测试机上却无法使用,报错:
QSqlError("-1", "Error opening database", "out of memory")
意思是,无法打开数据库。
可是这里当然无法打开数据库,因为我要的就是这段代码来创建sqlite数据库。曾经也怀疑是自己代码写错了,可是转过头一想,Windows下执行的好好的(包括在测试机上),Mac开发机上也正常运行,所以dmg安装包方面的某个配置有
问题。但是
安装包的路径里明明包括了这个文件:
Contents/PlugIns/sqldrivers/libsqlite.dylib
(dmg打包其实就一句话:macdeployqt /Users/Jason/Desktop/build-untitled-Desktop_5_4_0_64bit-Release/untitled.app -dmg,具体参考:
http://blog.csdn.net/wsj18808050/article/details/44223065 )
void mylog::CreateLog()
{
QString m_logfile = "~/mylog.db";
QString m_createsql = " create table mytable (id INTEGER PRIMARY KEY, catalog varchar(30)) ";
if (!QFile(m_logfile).exists()) {
{
QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");
database.setDatabaseName(m_logfile);
if(!database.open())
{
qDebug()<<database.lastError();
qFatal("failed to connect.") ;
}
else
{
QSqlQuery sql_query;
database.exec(m_createsql);
// 原来使用以下代码,后来在stackoverflow上说应该使用database.exec(m_createsql); 但替换后
没有什么效果
// sql_query.prepare(m_createsql);
// if(!sql_query.exec())
// {
// qDebug()<<sql_query.lastError();
// }
// else
// {
// qDebug()<<"table created!";
// }
}
database.close();
}
}
}
就为这个小问题,搞了好几天了,希望各位大侠出手相救啊!