QSqlDatabase error ?

Alles rund um die Programmierung mit Qt
Antworten
aken0
Beiträge: 14
Registriert: 26. Oktober 2013 14:19

QSqlDatabase error ?

Beitrag von aken0 »

Guten tag,
ich versuche gerade mich in SQL ein bisschen einzufinden.
Nun habe ich erstmal versucht auf eine Datenbank zu connecten, jedoch kommt vom Compiler ein Fehler.
Hier mal mein Code, zum verbinden:

Code: Alles auswählen

void MainLogin::login()
{
    if(ui->le_hostadress->text() == "" || ui->le_user->text() == "" || ui->le_password->text() == "" || ui->le_chema->text() == "")
    {
        QMessageBox::information(this, "Bitte alle Felder ausfüllen", "Möglicherweiße wurden die Felder nicht richtig ausgefüllt.\nBitte überpürfen sie ihre Eingaben.");
        return;
    }

    QSqlDriver *SqlDriver = new QSqlDriver;
    QSqlDatabase dbPlaner = QSqlDatabase::addDatabase(SqlDriver);

    dbPlaner.setHostName(ui->le_hostadress->text());
    dbPlaner.setPort(ui->sb_port->value());
    dbPlaner.setDatabaseName(ui->le_chema->text());
    dbPlaner.setUserName(ui->le_user->text());
    dbPlaner.setPassword(ui->le_password->text());
    bool loginstate = dbPlaner.isOpen();

    if(loginstate == true)
    {
        QMessageBox::information(this, "Login Erfolgreich", "Es konnte erfolgreich zur Datenbank verbunden werden");
    }
    else
    {
        QMessageBox::warning(this, "Error", "dbPlaner.lastError()");
    }
}

und hier die Compilermeldung:

Code: Alles auswählen

/home//Arbeitsfläche/SQL-SchulPlaner/Schulplaner/mainlogin.cpp:31: Fehler:cannot allocate an object of abstract type 'QSqlDriver'
     QSqlDriver *SqlDriver = new QSqlDriver;
                                 ^
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Re: QSqlDatabase error ?

Beitrag von Markus »

Schau einfach mal in die minimalen Beispiele in der Doku SQL Programming, damit Du weißt, was und wie Du etwas brauchst.
aken0
Beiträge: 14
Registriert: 26. Oktober 2013 14:19

Re: QSqlDatabase error ?

Beitrag von aken0 »

Okay ich brauche einen QMYSQL-Driver. Dieses muss ich aber vorher erst kompilieren, jedoch klappt das nicht ganz. Ich versuche das ganze an Hand dieser Anleitung:http://seppemagiels.com/blog/create-mys ... t5-windows. Jedoch existiert bei mir der Pfad: "C:\PROGRA~2\MySQL\MYSQLS~1.5" nicht. Ebenfalls der Pfad im QT-Ordner: "Sources\qtbase\src\plugins\sqldrivers\mysql\" gibt es bei mir nicht. Ich benutze das ganze unter MinGW. Kennt jemand die Lösung ?
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Re: QSqlDatabase error ?

Beitrag von Markus »

Ich habe den Treiber unter Qt 5.x noch nicht kompiliert, aber ich habe vor einiger Zeit mal ein kleines Mini-HowTo für Qt 4.x gepostet. Vielleicht kannst Du ja etwas ableiten...
aken0
Beiträge: 14
Registriert: 26. Oktober 2013 14:19

Re: QSqlDatabase error ?

Beitrag von aken0 »

Die Anleitung ist auf jeden Fall hilfreich. Leider komme ich nicht weit. Denn ich habe in meinem QT ordner kein Sources Ordner und somit auf nicht den Pfad: src\plugins\sqldrivers\mysql
Ohne diesen Pfad kann ich ja nicht weiter machen, kann man diesen nachträglich runterladen, oder was sollte ich jetzt machen ?
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Re: QSqlDatabase error ?

Beitrag von Markus »

Entweder über den Installer nachinstallieren, wenn Du den benutzt hast oder unter Source-Packages herunterladen.
aken0
Beiträge: 14
Registriert: 26. Oktober 2013 14:19

Re: QSqlDatabase error ?

Beitrag von aken0 »

Ich weiß echt nicht was ich falsch mache. Ich habe mir jetzt das Source-Paket heruntergeladen, dort ist aber nichts von mysql oder ähnliches drinn ?
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Re: QSqlDatabase error ?

Beitrag von Markus »

In der Zipdatei "qt-everywhere-opensource-src-5.1.1.zip" gibt es ein Unterverzeichnis "\qtbase\src\sql\drivers\mysql".

Oder mach' eine Installation mit dem Qt Online Installer for Windows und wähle dort unbedingt den Punkt "Source components" aus.
aken0
Beiträge: 14
Registriert: 26. Oktober 2013 14:19

Re: QSqlDatabase error ?

Beitrag von aken0 »

Okay das mit dem Pfad wäre geklärt, wenn ich jedch jetzt compiliere mit:
C:\Qt\5.1.1\Tools\mingw48_32\bin\mingw32-make.exe -f Makefile.Release
entsteht dieser Error:

Code: Alles auswählen

g++ -c -pipe -fno-keep-inline-dllexport -O2 -fno-exceptions -frtti -Wall -Wextra -DUNICODE -DQT_NO_EXCEPTIONS -DQT_NO_DE
BUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I. -I"C:\MySQL\Server\include" -I"C:\Qt\5.1.1\5.1.1\mingw48_32\include"
 -I"C:\Qt\5.1.1\5.1.1\mingw48_32\include\QtGui" -I"C:\Qt\5.1.1\5.1.1\mingw48_32\include\QtCore" -I".moc\release_shared"
-I"..\..\..\..\mkspecs\win32-g++" -o .obj\release_shared\qsql_mysql.o qsql_mysql.cpp
qsql_mysql.cpp:44:40: fatal error: QtSql/private/qsqldriver_p.h: No such file or directory
 #include <QtSql/private/qsqldriver_p.h>
                                        ^
compilation terminated.
Makefile.Release:418: recipe for target '.obj/release_shared/qsql_mysql.o' failed
mingw32-make: *** [.obj/release_shared/qsql_mysql.o] Error 1
heißt ja soviel, dass es die Datei qsqldriver_p.h nicht existiert, oder ?
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Re: QSqlDatabase error ?

Beitrag von sowas »

Hallo,
qt liefert mit seinem Programm auch Beispiele und Demos.
Unter den Demos findest du das Programm sqlbrowser.
Kompilier es und ruft es auf.
Dann erscheint ein Dialog mit allen gefundenen sql-Treiber für qt auf deinem System.
Wenn bei dir keine aufgeführt werden, dann klappte die Installation derselben nicht,
sonst ist ein Fehler in deiner Entwicklung und hier hast ein Beispiel wie man
es machen kann.
aken0
Beiträge: 14
Registriert: 26. Oktober 2013 14:19

Re: QSqlDatabase error ?

Beitrag von aken0 »

Ja bringt mit aber nicht viel. Denn von Haus aus ist mysql nicht in QT kompiliert . Mann muss ja erst der Treiber kompilieren, bevor man irgendein Projekt mit MySql machen kann. Klappt jedoch bei mir nicht, weil der Compiler wie in meinem vorherigen Post beschrieben, ein paar Fehler ausspuckt.
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Re: QSqlDatabase error ?

Beitrag von sowas »

Hallo,
ich habe probehalber qt5.1.1 für mingw48 auf einen window xp geladen und intalliert.
Nach ca. 30 Minuten kompilierte ich im QtCreator das Beispiel sqlbrowser.
Alles verlief ohne Fehler. Der sqlbrowser Dialog zeigte alle installierte
Treiber an.
aken0
Beiträge: 14
Registriert: 26. Oktober 2013 14:19

Re: QSqlDatabase error ?

Beitrag von aken0 »

Ich habe es bereits mehrfach installiert, es geht aber eben net so wie bei dir von Anfang an, sogar die Ordnerstruktur ist anders, bzw wie beschreiben muss ich den Source ordner nachträglich installieren
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Re: QSqlDatabase error ?

Beitrag von sowas »

Hallo,
ich habe geladen:
"Qt 5.1.1 for Windows 32-bit (MinGW 4.8, OpenGL, 666 MB) (Info)"
irgendwann bei der Installation wird gefragt wie man installieren möchte
default, alles oder .., ich wählte alles.

Die von mir angegebene Orderstruktur war gültig für Linux.
Bei der Winows Version gibt es keine "demos", alles liegt unter "examples".

Wenn bei dir keine fehlerfreien original Beispiele laufen dann kann es ev.
an der Installation liegen.

Welche zusätzliche Dateien muss du in den Source ordner nachträglich installieren?
aken0
Beiträge: 14
Registriert: 26. Oktober 2013 14:19

Re: QSqlDatabase error ?

Beitrag von aken0 »

Okay ich melde mich mal hier wieder. Ich habe das ganze nochmals versucht. Bekomme von mingw beim kompilieren auch keine ersichtlichten Fehler, aber wenn ich in die Debug & Release Ordner rein schaue, wurden dort keine Dll`s oder ängliches abgelegt.
Das ganze habe ich nach dieser Anleitung gemacht: "http://ieatbinary.com/2011/07/11/how-to ... r-windows/" der Build-Vorgang ist ohne Fehler abgelaufen, nur besteht das Problem, das keine Dateien in den jeweiligen Projektordnern erstellt werden, dieser ich aber brauche, um QT überhaupt erst den Treiber bekannt zu machen?
Antworten