ich habe folgendes Problem:
Ich versuche eine Klasse zu erstellen, mit dessen Hilfe es möglich sein soll zur Laufzeit die Datenbank (QSQLITE) abzuändern.
Die Klasse DBManager stellt meinen Versuch dar:
Code: Alles auswählen
class DBManager : public QObject
{
Q_OBJECT
public:
DBManager(QObject *parent = 0);
QString dbName();
void setDBName(QString dbName);
void initDB();
private:
QString _dbName;
QSqlDatabase _db;
};
Code: Alles auswählen
/* ... getter für die Attribute ... */
void DBManager::initDB()
{
this->_db = QSqlDatabase::addDatabase("QSQLITE");
this->_db.setDatabaseName(this->dbName());
if (!this->_db.open()) {
QMessageBox::critical(0, tr("DB could not be opened!"), this->_db.lastError().text());
return;
}
qDebug("db opened");
}
Die Instanz des DBManager wird als privates Attribut in meinem Hauptfenster gehalten, wenn ich nun jedoch in meinem Hauptfenster ein QSqlTableModel anlege und eine abfrage auf einer Tabelle, in der zugehörigen DB Mache, bleibt das Ergebnis (ohne Fehlermeldung) leer, obwohl die entsprechende Tabelle definitiv nicht leer ist.
Code: Alles auswählen
void MainWindow::MainWindow()
{
QSqlTableModel model;
model.setTable("members");
model.select();
int i = model.rowCount(); // ist 0
}
Kann mir hier jemand weiterhelfen?
Gruß und Dank
DerHandwerk