Ich möchte sqlite Datenbank verbinden und eine Android-App schreiben.
aber, wenn ich die App ausführen, gebe ich einen Fehler, der sagte: Datenbank nicht geöffnet.wie zu SQLite von QT verbinden und es auf 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 ("INTO Person INSERT (id, Vorname, Nachname, Alter) VALUES (: ID,: VORNAME,: ZUNAME,: AGE)"); query2.bindValue (": ID", 1); query2.bindValue (": VORNAME", "ali"); query2.bindValue (": LASTNAME", "alavi"); query2.bindValue (": AGE", 24); query2.exec(); QSqlTableModel-Modell; model.setTable ("Person"); modell.select(); QSqlRecord record = model.record (0); Ergebnis = Datensatz.Wert ("Vorname"). ToString(); }
QString CSqlConnect::getValue()
{
return result;
}
CSqlConnect::~CSqlConnect()
{
db.close();
}
Es ist überraschend ist, wie schwer diese Antwort in Google zu finden ist. 2 Stunden vor der Ankunft verschwendet. Für andere, die hier voller Wut und Frustration sind: benutze einfach '#ifdef Q_OS_ANDROID' und du bist da. –