mysql c++ Windows



  • Hallo,
    ich möchte gerne eine Verbindung von c++ zu einer Mysql Datenbank aufbauen, jedoch erhalte ich nur Fehlermeldungen oder das Programm stürzt ab.
    Daten:
    OS: Windows 7 Prof 64 bit
    Compiler: MinGW
    IDE: Netbeans 7.3

    Ich habe mir von der Mysql Website den Community Server 5.7 heruntergeladen und inklusive des C++ Connectors in der 64 bit Version (auch in der 32 bit Version getestet) installiert. In Netbeans habe ich dann die mysqlcppconn.dll Library in den Linker eingefügt. Den Debug Modus habe ich auf Release umgestellt.
    Das Programm lässt sich erfolgreich erstellen stürtzt aber beim Ausführen mit der Meldung: "4836 Segmentation fault sh" ab.

    Zudem habe ich noch unzählige andere Varianten getestet(Cygwin, .so .a Libarys, ...) , jedoch alles ohne Erfolg.
    Ich würde mich überaus freuen, wenn mir jmd. noch mal genau sagt, welche Libraries gelinkt werden müssen oder worauf man achten muss.
    Vielen Dank.



  • Hallo,

    ich kann auch keine Verbindung zu MySQL aufbauen. Bei mir findet der Builder einfach nicht die libmysql.dll. Er gibt aber auch keinen eindeutigen Hinweis wo er sie sucht. Einträge in Bibliothekspfaden bleiben wirkungslos.
    Ich wüßte schon gerne wie es geht.

    Bist schon weiter mit Deinem Problem ?

    Gruß Rudi



  • Hallo, also ich bin heute auch leider dran gescheitert eine lauffähiges Beispiel zu erstellen mit MinGW unter Windows 7 64 Bit und MySQL.

    Ich finde es erschreckend schlecht dokumentiert, und wenn man etwas findet dann ist es teilweise schon veraltet oder ich bin einfach zu blöd, die Libraries ins richtige Format zu wandeln. Ergebnis beim kompilieren: mehrere undefined references...

    Ich habe libmysql.lib gewandelt in libmysql.a, die libmysqlclient.lib habe ich aber nirgends gefunden, sie wird aber in allen Anleitung verwendet?!?!?

    Ich verwende Netbeans, MinGW und Qt. Sollte jemand über ein gute Anleitung verfügen für die Installation von mysql mit mingw, dann wäre ich sehr dankbar.



  • Hallo, in einem andern Thread hab ich von TH69 einen Tipp bekommen:

    Unter MYSQL with Borland C++ Builder 5 or 6 (BCB) gibt es eine Anleitung (müßte auch für neuere Versionen gültig sein).

    Den Link findest du im C++ Builder forum unter Linkerfehler(gelöst)

    Viel Spaß,Rudi



  • Hallo, habe mich heute nochmal an MySQL dran gewagt und folgede Anleitung erstellt, evtl. hilft es ja dem ein oder anderen!

    Testsystem: Windows 7/32 Bit, NetBeans 7.4, MinGW32/4.8.1

    *Notwending: MySQL Community Server, siehe http://dev.mysql.com/downloads/file.php?id=450831
    
    1.) 'libmysql.lib' und 'libmysql.dll' aus dem Ordner "mysql-5.6.16-win32/lib" kopieren, in ein neues Verzeichnis kopieren.
    
    2.) Eingabeaufforderung im erstellten Ordner öffnen und folgenden Befehle eingeben:
    
    	> reimp libmysql.lib	
    	# Erzeugt die zwei folgenden Dateien, 'liblibmysql.a' und 'libmysql.def'
    
    	REF:
    	=======
    	http://prdownloads.sourceforge.net/mingw/mingw-utils-0.2.tar.gz?download
    	http://www.openwebspider.org/documentation/how-to-link-libmysqllib-with-dev-c-or-gcc-under-windows/
    
    3.) Die neu erzeugte Datei, 'libmysql.a' und 'libmysql.dll' nach "MinGW/lib" kopieren
    
    4.) Alle Header Dateien aus "mysql-5.6.16-win32/include/" nach "MinGW/include" kopieren
    
    5.) Projekteigenschaften->Build->Linker
    
    	> Bei Libraries/Libraries, über Add Library 'libmysql.a" hinzufügen welche im Ordner "MinGW/lib" ist
    

    MySQL & C++ Example
    =====================

    #include <cstdlib>
    #include <iostream>
    #include <windows.h>
    #include <mysql.h>
    
    using namespace std;
    
    int main(int argc, char** argv) {
    
        cout << "MySQL Test:" << endl;
    
        MYSQL *connect;
        if(!(connect = mysql_init(NULL))) {
            cerr << "[!] Initialisierung fehlgeschlagen!" << endl;
            return 1;
        }
    
        connect = mysql_real_connect(connect, 
                "localhost", 	
                "user", 
                "password", 
                "DATABASE", 0, NULL, 0);
    
        if(connect) {
            cout << "Verbindung aufgebaut" << endl;
        } else {
            cerr << "[!] Verbindung zur DB konnte nicht hergestellt werden" << endl;
            return 1;
        }
    
        MYSQL_RES *res_set;
        MYSQL_ROW row;
    
        mysql_query(connect, "show tables");
        res_set = mysql_store_result(connect);
    
        unsigned int i, numrows = mysql_num_rows(res_set);
    
        cout << "Tables in database" << endl;
    
        while( (row = mysql_fetch_row(res_set)) != NULL ) {
            cout << row[i] << endl;
        }
    
        mysql_close(connect);
    
        return 0;
    }
    


  • Hallo C++-SQLNeuling,

    Ich versuche nun seit ca. 10 Stunden eine Verbindung zu meiner SQL Datenbank zu bekommen.
    Dazu habe ich diverse Anleitungen durchgearbeitet. Diese sind leider zum Teil relativ alt, wodurch ich denke dass diese deshalb nicht mehr funktionieren.

    Und zwar haben wir in der Schule ein Projekt, bei welchem wir uns auf eine SQL Datenbank verbinden sollen. Der Lehrer verwendet leider ein Linux Betriebssystem, wodurch er mir, ausser dem Wechsel auf Linux, keine Hilfe anbieten kann.

    Ich möchte dies jedoch unter Windows realisieren.

    Mein System: - Windows 7 64Bit, MinGW32 4.8.1-4, Eclipse Kepler, MySQL Installer 5.6.16 für Windows

    Wenn ich nun deine Anleitung ausführe, erhalte ich beim Punkt 2 nach dem „reimp“ eine liblibmysql.a Datei. Später sprichst du jedoch nur noch von einer libmysql.a Datei. Muss man die Umbenennen oder wie kommt man zu dieser?

    Ich habe deinen MySQL Example im Eclipse eingefügt. Jedoch erhalte ich beim ausführen dann folgende Fehlermeldungen:

    undefined reference to mysql_init@4' undefined reference tomysql_real_connect@32'
    undefined reference to mysql_query@8' undefined reference tomysql_store_result@4'
    undefined reference to mysql\_num\_rows@4' undefined reference tomysql_fetch_row@4'
    undefined reference to `mysql_close@4'

    Kompiliert wurde folgender massen:
    g++ -o sql_test.exe "src\\sql_test.o" –lmysql

    Wenn mir jemand helfen könnte die MySQL Datenbank mit Hilfe von C++ und MinGw zu verbinden, wäre ich sehr froh.

    Viele Dank und Grüsse
    Enrico


Log in to reply