我想連接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',你就在那裏。 –