我想连接sqlite数据库并编写一个Android应用程序。
但是,当我运行的应用程序,我给了一个错误说:数据库未打开。如何通过qt连接到sqlite并运行它在android
#include "csqlconnect.h"
#include <QFile>
#include <QSqlQuery>
#include <QMessageBox>
#include <QDebug>
#include <QSql>
#include <QSqlError>
#include <QSqlTableModel>
#include <QSqlRecord>
CSqlConnect::CSqlConnect()
{
db = QSqlDatabase::addDatabase("QSQLITE","MyConnection");
QFile dfile("./myfile.sqlite");
bool dbf=dfile.exists();
if (!dbf)
{
QFile::copy("assets:/myfile.sqlite", "./myfile.sqlite");
QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}
db.setDatabaseName("myfile.sqlite");
bool open=db.open();
if(!open)
{
QMessageBox::warning(0, "Failed to connect!", "Error connecting to database: "+db.lastError().driverText());
// qDebug()<<"Failed!!!!";
}
if(open)
{
QSqlQuery query;
query.exec("create table person "
"(id integer primary key, "
"firstname varchar(20), "
"lastname varchar(30), "
"age integer)");
}
QSqlQuery query2;
query2.prepare( “INSERT INTO人(ID,名字,姓氏,年龄)VALUES(:ID,:FIRSTNAME,:LASTNAME,:AGE)”); query2.bindValue(“:ID”,1); query2.bindValue(“:FIRSTNAME”,“ali”); query2.bindValue(“:LASTNAME”,“alavi”); query2.bindValue(“:AGE”,24); query2.exec(); QSqlTableModel模型; model.setTable(“person”); model.select(); QSqlRecord record = model.record(0); result = record.value(“firstname”)。toString(); }
QString CSqlConnect::getValue()
{
return result;
}
CSqlConnect::~CSqlConnect()
{
db.close();
}
让人惊奇的是这个答案是如何努力在谷歌找到。在来这里之前浪费了2个小时。对于那些充满愤怒和沮丧的人来说:现在只需使用'#ifdef Q_OS_ANDROID',你就在那里。 –