Seite 1 von 1

MySQLDatabase

Verfasst: 7. November 2008 13:53
von reuabreliz
Also ich habe eine Klasse myDatabase.h diese soll sich lediglich mit der Datenbank verbinden. (z.b.: setHostname(), setDatabaseName(), addDatabase, usw.) und soll dann einen Zeiger auf diese Verbindung zurückgeben.

Das ist mein Code der aber leider nicht funktioniert:

Code: Alles auswählen

  1 #include "myDatabase.h"                                                                            
  2 #include <QDebug>                                                                                  
  3                                                                                                    
  4 MyDatabase::MyDatabase() : QSqlDatabase()                                                          
  5 {                                                                                                  
  6                                                                                                    
  7 }                                                                                                  
  8                                                                                                    
  9 QSqlDatabase *MyDatabase::connect()                                                                
 10 {                                                                                                  
 11     this->addDatabase("QMYSQL");                                                                   
 12                                                                                                    
 13     this->setHostName("localhost");                                                                
 14     this->setDatabaseName("reifepruefung");                                                        
 15     this->setUserName("root");                                                                     
 16     this->setPassword("mysql");                                                                    
 17     if(this->open());                                                                              
 18         qDebug() << "geschafft";                                                                   
 19     return this;                                                                                   
 20 }    
Aber wenn ich nun die Funktion connect aufrufe gibt sie mir keine zulässige Verbindung zurück.

Verfasst: 7. November 2008 15:11
von Christian81
Abgesehen davon dass ein Ableiten von QSqlDatabase nicht unbedingt sinnig ist (siehe Doku und das dortige Beispiel) ist 'gibt sie mir keine zulässige Verbindung zurück' auch keine Fehlermeldung die uns weiterhilft. Gibt open() false zurück oder was genau geht nicht?

Verfasst: 7. November 2008 15:32
von reuabreliz
Ja wie soll ich es sonst machen? Ich will nicht jedes mal den ganzen COde hinschreiben für die Datenbank verbindung.

Beim Debuggen sagt er mir:

QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
geschafft
QSqlQuery::exec: database not open
Segmentation fault

Verfasst: 7. November 2008 15:39
von Christian81
Einfach so wie es in Der Doku (ja die ist zum lesen da!) steht.
Einmal die DB-Verbindung öffnen und dann immer per QSqlDataBase::database() drauf zugreifen und fertig.
Da open() funktioniert -wo ist das Problem? Die Fehler sagen nur aus dass Du vorher wohl schon einmal ein QSqlDatabase::addDatabase() ausgeführt hast.

Verfasst: 12. November 2008 19:54
von reuabreliz
Könntest du mir den Link zu dieser Doku schicken

Verfasst: 12. November 2008 20:00
von upsala

Verfasst: 12. November 2008 20:14
von reuabreliz
Also den Link kenn ich mitlerweile auch schon danke. Wär wirklich nett wenn du mir den Link zu dem was ich brauche gibst, weil ich habe nicht Lust mir da jetzt alles durchzulesen und dann das richtige herauszufiltern

Verfasst: 12. November 2008 22:13
von Christian81