#include <QtGui>
#include <QtSql>
#include <QApplication>
class ABC {
public:
QSqlDatabase db;
QSqlQuery memberQuery;
ABC() {
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test");
qDebug() << "Database open test : " << db.open();
}
void database() {
qDebug() << "Inside database method..." << endl;
QSqlQuery localQuery ;
qDebug() << "Using local Query : " << localQuery.exec("create table if not exists alu (ini int)");
localQuery.clear();
qDebug() << "Using memeber query object: " << memberQuery.exec("create table if not exists alu (ini int)");
memberQuery.clear();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ABC ob;
ob.database();
return a.exec();
}
Folgendes Ergebnis wird nach der Ausführung dieses Codes gefunden.Qt-Datenbankfehler aufgrund des QSqlQuery-Objektbereichs
Meine Frage ist, warum kann ich nicht ein Mitgliedsobjekt QSqlQuery anstelle eines lokalen verwenden?
Warum funktioniert das lokale Objekt Arbeit mit db witout initializaing? – Dewsworld
Es funktioniert, weil nach dem Hinzufügen der Datenbank, wird es die Standardverbindung, so dass jede 'QSqlQuery'created danach verwendet wird. Wenn Sie eine Klasseneigenschaft verwenden, wird QSqlQuery vor dem Erstellen der Standard-DB-Verbindung instanziiert. – Koying