QT und mySQl Probleme

Alles rund um die Programmierung mit Qt
Antworten
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

QT und mySQl Probleme

Beitrag von sea_bear »

Moin moin!

Ich habe mit Qt und mySQL das Problem, dass ich nicht weiß wie ich einen QsqlCursor sowie ein QsqlQuery so erzeuge, dass ich von allen Funktionen und Dateien in meinem Programm darauf zugreifen und diese auch nutzen kann.

Mein Funktion zum laden der Datenbank sieht wie folgt aus:

Code: Alles auswählen

bool c_dvd_db::connect_database(void)
{
 QSqlDatabase *main_DB = QSqlDatabase::addDatabase( "QMYSQL3" );
 if ( ! main_DB )
 {
  qWarning( "Failed to connect to driver" );
  DatenBank_geladen = FALSE;
  return FALSE;
 }
 main_DB->setDatabaseName(DBName);
 main_DB->setUserName(DBUsername);
 main_DB->setPassword(DBPassword);
 main_DB->setHostName(DBHostname);
 if ( ! main_DB->open() )
 {
  qWarning( "Failed to open Database: " + main_DB->lastError().driverText() );
  qWarning( main_DB->lastError().databaseText() );
  DatenBank_geladen = FALSE;
  return FALSE;
 }
 DatenBank_geladen = TRUE;
 return TRUE;
}
Jetzt habe ich versucht nach der Zeile „DatenBank_geladen = TRUE;“ einen QsqlCursor zu erzeugen.

Code: Alles auswählen

QSqlCursor books_cur( "books" );
Soweit so gut. Leider ist dieser Cursor dann nur in dieser Funktion erreichbar. Versuche ich ihn nun Global zu erzeugen, so bekomme ich immer eine Fehlermeldung, dass ich keinen QsqlCursor erzeugen kann solange noch keine Qapplication vorliegt.
Wie aber erzeuge ich nun den QsqlCursor bzw. ein QsqlQuery so, dass ich es überall in meinem Programm nutzen kann???
Am liebsten würde ich gerne all die Datenbank Operationen und Manipulationen in eine Klasse packen, so dass ich sie dann bei Bedarf ganz einfach aufrufen kann. Z.B. in dieser Form

Code: Alles auswählen

booksDB.setzeFilter(SQL Anweisung);
booksDB.next();
Leider sind alle Beispiele die ich bis jetzt über Google dazu gefunden habe entweder dermaßen kompliziert das ich nicht durchblicke oder aber einfach nicht für mich so umsetzbar.

Ich wäre um jede Hilfe Dankbar.

Tobias
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

was fuer eine qt version qt4.2 ?

in den unteren code ist sicher alles drinnen was qtsql hergibt..... der driver mysql komt auch wenn er gebuildet ist

Code: Alles auswählen

svn co https://svn.sourceforge.net/svnroot/qtexcel-xslt/_odbc_wizard/    odbcwizard

cd odbcwizard && qmake a.pro && make 
.........................
speack português italiano deutsch english castellà qt
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

Beitrag von sea_bear »

Nun ja, vielleicht habe ich mich ja falsch ausgedrückt.
Ich kann durchaus auf meine Datenbank zugreifen. Das läuft alles super. Mein Problem ist halt nur, dass ich gerne irgendwo zu Beginn meinens Programms einen QSqlCursor und einen QSqlQuery anlegen würde, welchen ich dann überall in meinem Programm nutzen kann. Das ist eigentlich auch schon alles.
Leider bekomme ich das abere eben nicht hin! :-(

Tobias

PS: ich nutze Qt 3.x
Spring-Daniel
Beiträge: 40
Registriert: 4. Oktober 2004 16:26

Beitrag von Spring-Daniel »

Du hast da eher eine konzeptionellen Programmierfehler. Was spricht dagegen jedesmal wenn du einen QSqlCursor benötigst denn auch zu erzeugen? Ansonsten solltest Du Dich nochmal intensiv mit Deiner Programmiersprache auseinandersetzen - Konzepte von Globalen und Lokalen Variablen, Strukturierung, etc.

Als ad-hoc Lösung kannst Du ja mal einen globalen Zeiger auf QSqlCursor deklarieren, und dann diesen nach der Verbindung zu Deiner Datenbank zu belegen - Vortan solltest Du über diesen Zeiger global auf Deine Datenbank zugreifen können. (Allerdings, und jetzt werden mich wohl einige mit Mist bewerfen, macht man sowas natürlich nicht - Globale Variablen sollten so weit wie möglich vermieden werden)

Daniel
Antworten