Seite 1 von 1
QSqlDatabase error ?
Verfasst: 30. Oktober 2013 20:43
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;
^
Re: QSqlDatabase error ?
Verfasst: 31. Oktober 2013 10:16
von Markus
Schau einfach mal in die minimalen Beispiele in der Doku
SQL Programming, damit Du weißt, was und wie Du etwas brauchst.
Re: QSqlDatabase error ?
Verfasst: 1. November 2013 00:42
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 ?
Re: QSqlDatabase error ?
Verfasst: 1. November 2013 09:14
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...
Re: QSqlDatabase error ?
Verfasst: 1. November 2013 12:32
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 ?
Re: QSqlDatabase error ?
Verfasst: 1. November 2013 12:44
von Markus
Entweder über den Installer nachinstallieren, wenn Du den benutzt hast oder unter
Source-Packages herunterladen.
Re: QSqlDatabase error ?
Verfasst: 1. November 2013 13:21
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 ?
Re: QSqlDatabase error ?
Verfasst: 1. November 2013 13:50
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.
Re: QSqlDatabase error ?
Verfasst: 1. November 2013 15:31
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 ?
Re: QSqlDatabase error ?
Verfasst: 1. November 2013 19:25
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.
Re: QSqlDatabase error ?
Verfasst: 2. November 2013 07:44
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.
Re: QSqlDatabase error ?
Verfasst: 2. November 2013 10:04
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.
Re: QSqlDatabase error ?
Verfasst: 2. November 2013 18:31
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
Re: QSqlDatabase error ?
Verfasst: 3. November 2013 07:56
von sowas
Hallo,
ich habe geladen:
"Qt 5.1.1 for Windows 32-bit (MinGW 4.8, OpenGL, 666 MB)

nfo)"
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?
Re: QSqlDatabase error ?
Verfasst: 22. November 2013 22:32
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?