• 4363阅读
  • 3回复

[提问]Mac上创建sqlite出问题了 [复制链接]

上一主题 下一主题
离线stlcours
 

只看楼主 倒序阅读 楼主  发表于: 2016-05-27
以下这段代码是用来在数据文件还不存在的时候,用来创建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();
        }
    }
}

就为这个小问题,搞了好几天了,希望各位大侠出手相救啊!



离线渡世白玉

只看该作者 1楼 发表于: 2016-05-27
目录权限
离线toby520

只看该作者 2楼 发表于: 2016-05-27
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线stlcours

只看该作者 3楼 发表于: 2016-05-27
快速回复
限100 字节
 
上一个 下一个