QSqlTableModel ist immer leer
Verfasst: 15. März 2010 01:16
Hallo zusammen,
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:
Zum Programmstart übergebe ich dem DBManager den DB-Namen und rufe initDB() auf, welche auch ohne Fehlermeldung abläuft.
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.
Versuche ich das ganze innerhalb von DBManager, funktioniert es ohne Probleme.
Kann mir hier jemand weiterhelfen?
Gruß und Dank
DerHandwerk
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