QT4 & MySQL keine Verbindung

Alles rund um die Programmierung mit Qt
[ToTTo]
Beiträge: 41
Registriert: 2. November 2005 19:00

QT4 & MySQL keine Verbindung

Beitrag von [ToTTo] »

Hallo,

ich versuche grade mich zu einer MySQL 4 DB mit Hilfe von QT 4 zu connecten aber leider haut es nicht hin....
Es wird auch keine Verbindung zum localhost aufgenommen (sehe ich in meiner FireWall).

Ich habe einfach mal den Standardbenutzer und die Standard DB verwendet.

Über PHPMyAdmin komme ich ohne Probleme auf die DB.
Die mysql.h ist auch vorhanden.

Code: Alles auswählen

#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

static bool createConnection()
{
    QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
	database.setHostName("localhost");
    database.setDatabaseName("mysql");
	database.setUserName("root");
    database.setPassword("");
    bool ok = database.open();

    
    if (ok == false) {
        QMessageBox::critical(0, qApp->tr("Cannot open database"),
            qApp->tr("Unable to establish a database connection.\n"
                     "This example needs SQLite support. Please read "
                     "the Qt SQL driver documentation for information how "
                     "to build it.\n\n"
                     "Click Cancel to exit."), QMessageBox::Cancel,
                     QMessageBox::NoButton);
        return false;
    }

    QMessageBox::information(0, "OK", "OK");
    return true;
}
Woran kann es liegen, dass ich keine Verbindung bekomme?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: QT4 & MySQL keine Verbindung

Beitrag von macman »

Die üblichen Verdächtigen ausgeschlossen? Falscher Datenbankname, falscher Username, falsches Passwort, falscher Port.
[ToTTo]
Beiträge: 41
Registriert: 2. November 2005 19:00

Beitrag von [ToTTo] »

Hab den Port 3306 noch hinzugefügt aber es ändert sich nichts....
Kriege einfach keine Verbindung.
Gibt es noch eine andere Möglichkeit zur Herstellung einer Verbindung oder stimmt vielleicht was mit dem QMySQLDriver nicht?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Lass dir doch mal den Fehler ausgeben mit:

Code: Alles auswählen

QMessageBox::critical(0,"Fehler",database.lastError().databaseText() ()+"\r\n"+database.lastError().driverText(),QMessageBox::Ok,QMessageBox::NoButton);
[ToTTo]
Beiträge: 41
Registriert: 2. November 2005 19:00

Beitrag von [ToTTo] »

Can't create TCP/IP socket kommt als fehler.

Was muss ich da ändern?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Das hat mit der Firewall den nix zu tun. Denn da würdes du was bekommen von wegen, das der Server nicht erreichbar währe. Wenn der aber kein Socket erstellen kann, dann hat vermutlich dein TCP Stack eine Machke. Was haste denn für ein System?
[ToTTo]
Beiträge: 41
Registriert: 2. November 2005 19:00

Beitrag von [ToTTo] »

WIN XP Prof Sp2
Apache 2
MySQL 4.1.9
QT 4.0.1
MS Visual C++ 6

hab aber leider keine Ahnung wie ich das mit dem TCP STack auf die Reihe kriegen soll.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

kannst ja mal statt loclahost die lokale IP adresse versuchen. Aber nicht die 127.0.0.1 sondern die richtige:)
[ToTTo]
Beiträge: 41
Registriert: 2. November 2005 19:00

Beitrag von [ToTTo] »

Nein funktioniert auch nicht.

Noch jemand eine Idee?

Irgendwie bekomme ich hier nie nen Tipp der funktioniert :-(
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ist ja auch raten ins Blaue. Mach ein kleines Projekt, stell es hier rein, und dann kann jeder der auch einen MySQL-Server auf seinem Rechner laufen hat, es auf seinem Rechner testen.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

dann kannste mal mit telnet localhost 3306 schauen, ob eine verbindung überhaupt möglich ist
[ToTTo]
Beiträge: 41
Registriert: 2. November 2005 19:00

Beitrag von [ToTTo] »

Das ist ein QT Problem unter Windoof.

Ich muss die MYSQL dll neu machen.
Hab einfach mal qmake -o Makefile sql.pro und dann nmake gemacht hilft aber leider nix.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

nächtes mal solltes du schreiben, das du den ms compiler benutzt!!
[ToTTo]
Beiträge: 41
Registriert: 2. November 2005 19:00

Beitrag von [ToTTo] »

ok.

und nu?

kann mir vielleicht jemand funktionierende dateien schicken oder mal schnell nen link machen wo ich mir die ziehen kann?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

du brauchst nicht die dll neu machen nur das Plugin.
Dazu must benötigts du die mysql includes und die mysqlclient.lib, welche sich im mysql packet befinden. dann solle es gehen wie in der Doku beschrieben:
cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake
Antworten