记录将pc代码移植到android上,使用的是qt5.12
基本是参考的网上的,但是网上的总是不成功,只是修改了1点,其他基本相同,没有细究原因。
#ifndef DATABASECONNECTION_H
#define DATABASECONNECTION_H
#include "qsqldatabase.h"
#include <QsqlDatabase>
#include <QString>
#include <QSqlQuery>
#include <QObject>
#include <QDebug>
#include <QSqlError>
#include <QFile>
#include <QMessageBox>
static bool connectiondatabase(bool bl)//连接数据库
{
QFile file1("assets:/bbb/CALIB.txt");//在assets里的文件通过""assets:""访问
if(file1.exists()){ //如果文件存在
file1.copy("./CALIB.txt"); //拷到安卓本地目录
QFile::setPermissions("./CALIB.txt", QFile::WriteOwner | QFile::ReadOwner); //以读写的方式进行拷贝
}
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QFile file("assets:/bbb/nuclides.db");
if(file.exists()||file.size()==0){//3
file.copy("./nuclides.db");//4
file.setPermissions(QFile::ReadUser | QFile::WriteUser);//设置权限//5
}
db.setDatabaseName("nuclides.db");//
// db.setDatabaseName("nuclides.db");//指定数据库服务器名称
if(!db.open())
//打开数据库连接
{
return false;//打开失败
qDebug("open is false");
}
else
{
if (!bl)
{
db.close();
}
qDebug("open is true");
return true;//打开成功
}
}
#endif // DATABASECONNECTION_H
在pro文件中加入以下代码:
android{
data.files += aaa/nuclides.db
data.files += aaa/CALIB.txt
data.path = /assets/bbb
#data.path = /assets/aaa
INSTALLS += data
}
nuclides.db为数据库文件,txt文件是我用到的画图数据
遇到的问题:
路径网上的也试过了,网上教程应该也没问题,网上教程在下边这句代码中常常写成 QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”,“name”);修改为
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);发现居然成功了,pc端也没有name一直没问题。记录一下。