QT4 & MySQL keine Verbindung

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

Beitrag von [ToTTo] »

Klasse hat funktioniert.

Ich danke dir.

Die erste richtige Hilfe in diesem Forum. So kann es weitergehen.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

qt version 4.1

Es schein mir wirklich etwas falsch zu sein ..... buggi.
ich habe alle header file von mysql 4.1 c:\mysql

new line ----------
cd %QTDIR%\src\plugins\sqldrivers\mysql
new line ----------
qmake -o Makefile "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\lib\opt\LIBMYSQL.LIB" mysql.pro
new line ----------


mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `C:/Qt/4.1.1/src/plugins/sqldrivers/mysql'
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtSql" -I"C:/Qt/4.1.1/include" -I"C:/mysql/include" -I"C:/Qt/4.1.1/include/ActiveQt" -I"tmp\moc\release_shared" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o tmp\obj\release_shared\main.o main.cpp
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"C:/Qt/4.1.1/include/QtCore" -I"C:/Qt/4.1.1/include/QtSql" -I"C:/Qt/4.1.1/include" -I"C:/mysql/include" -I"C:/Qt/4.1.1/include/ActiveQt" -I"tmp\moc\release_shared" -I"." -I"C:/Qt/4.1.1/mkspecs/win32-g++" -o tmp\obj\release_shared\qsql_mysql.o ..\..\..\sql\drivers\mysql\qsql_mysql.cpp
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -shared -Wl,--out-implib,C:\Qt\4.1.1\plugins\sqldrivers\libqsqlmysql.a -o "..\..\..\..\plugins\sqldrivers\qsqlmysql.dll" tmp\obj\release_shared\main.o tmp\obj\release_shared\qsql_mysql.o -L"C:\Qt\4.1.1\lib" -L"C:\Qt\4.1.1\lib" C:\mysql\lib\opt\LIBMYSQL.LIB -lQtSql4 -lQtCore4
mingw32-make[1]: Leaving directory `C:/Qt/4.1.1/src/plugins/sqldrivers/mysql'

kommt durch ---- und dann kommet utf-8 encoding problemen...
da ich mysql alles auf utf-8 laufe lasse.... wie auf meinen linux server....

muss ich vielleicht die " libQtSql4.a " for dem koplilieren raus loeschen?...

die libqtmain.a habe ich prima gemacht im %QTDIR%\src\winmain


doch bei jedem mysql qt pro file kommt einfach...


:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot fin
-lQtSqld4

als test habe ich das qt projekt http://sourceforge.net/projects/otetsudaiqt
kompiliert mit dem selben result....

nun probiere ich eine normale console app mit mysql zu machen ohne
QMYSQLDriverPlugin um zu sehen ob eine verbindung kommt...
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

du versucht eine Debugversion vom Plug-in zu bauen, ohne jedoch die Debugversion von Qt zu haben.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

mit einem test wie dieses unten ende funktionierts..... und verbindet...

auch mit mingw32-make...

Was meinst du mit debug version???


ich mache so wie es im assist steht... qt4.1

cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake

was ist daran falsch?

mein nmake ist einen bat mit...

@echo off
mingw32-make %*



Code: Alles auswählen


/*
  Name: mysql.cpp
   google =>  libmysql-4.1.13a-1sid.DevPak
*/


#include <windows.h>
#include <iostream>
#include <mysql/mysql.h>
using namespace std;
int main()
{
    //connection params
    char *host = "localhost";
    char *user = "root";
    char *pass = "password";
    char *db = "mysql";

    //sock
    MYSQL *sock;
    sock = mysql_init(0);
    if (sock) cout << "sock handle ok!" << endl;
    else {
         cout << "sock handle failed!" << endl;
         return EXIT_FAILURE;
    }
    if (mysql_real_connect(sock, host, user, pass, db, 0, NULL, 0))
         cout << "connection ok!" << endl;
    else {
         cout << "connection failed!" << endl;
         return EXIT_FAILURE;
    }
    cout << "connection character set: " << mysql_character_set_name(sock) << endl;
    /////system("PAUSE");
    mysql_close(sock);
    return EXIT_SUCCESS;
}

BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

-lQtSqld4 ist die Debug Version von Qt. was nur gehen kann, wenn du auch eine Debugversion von Qt gebaut hast.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

BartSimpson hat geschrieben:-lQtSqld4 ist die Debug Version von Qt. was nur gehen kann, wenn du auch eine Debugversion von Qt gebaut hast.
hmmm du hast recht im pro file... ist am ende....

QT += sql
CONFIG+=debug

Gut ich bin hartnackick ... ich baue den qt 4.1 neu mit debug....

auf meine 2en platte (ubuntu) habe deb qt 4.1 nur mit configure && make && make install uebersetzt ... ich bin gespant ob bei window ein configure.exe - help kompt :-)
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

das Problem hatte ich auch (Can't create TCP/IP socket ) und konnte es so lösen:

1) In der *.pro folgende lib dazu: LIBS += WS2_32.lib
2) Dateien includen: #include <windows.h> #include <winsock.h>
3) Vor der Verbindung folgendes ausführen: WSADATA wsadata; und WSAStartup(0x0202, &wsadata);

Gruß

Marco812
Antworten