Hilfe bei C++ und MYSQL



  • Hallo zusammen ich beschäftige mich nun seit gestern mit C++ und MYSQL. Nun ja, ich habe ein Tutorial dazum im Net gefunden, und hab dieses erstmal bis zur erbindug durch gearbeitet. Jetzt habe ich den Quelcode davon Abgetippt, und bekomme immer folgende error meldung:

    error C2664: 'mysql_real_connect': Konvertierung des Parameters 6 von 'const char [5]' in 'unsigned int' nicht möglich 
    1>        Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    
    // Test SQl.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. 
    // 
    
    #include "stdafx.h" 
    #include <iostream> 
    #include <winsock2.h> 
    #include <mysql.h> 
    
    using namespace std; 
    
    int main() 
    { 
    
        MYSQL            *Connection;        // MySQL Handle 
        MYSQL_RES        *Ergebnis;            // Ergebnis einer Abfrage 
        TCHAR            Abfrage[10000];        // SQL Befehle 
        MYSQL_ROW        Zeile;                // Ergebniszeile 
        int                Anz;                // Anzahl der Zeilen 
        int                i; 
    
        Connection = mysql_init(NULL); 
    
        // Verbindung zum MySQL Server aufbauen 
        if(mysql_real_connect( 
                              Connection,    // MySQL Handle 
                              "localhost",    // Host Name 
                              "root",        // User 
                              "",            // Passwort 
                              "test",        // Datenbank 
                              "3306",            // Port (Standard: 3306) 
                              NULL,            // Socket (Standard: NULL) 
                              0) == NULL) 
        { 
            cout << "Fehler! Es konnte keine Verbindung zur Datenbank hergestellt werden!" << endl; 
        } 
        else 
        { 
            cout << "Die Verbindung zur Datenbank wurde hergestellt!" << endl; 
        } 
    
        mysql_close(Connection); 
    
        return 0; 
    }
    

    So kann mir vielleicht einer Helfe und sagen wo der Fehler dort Liegt ich find den einfach nicht.

    MFG
    Nero



  • Musst Du den Port vielleicht als Zahl und nicht als String übergeben?



  • Gehen wir das mal logisch an:

    Fehlermeldung (ohne Zeilennummer offenbar):

    ... 'const char [5]' in 'unsigned int' nicht möglich
    

    Ergo:
    Du hast irgendwo eine konstante Zeichenkette mit der Länge 4 (+1 für Stringende == '\0'). Erwartet wird aber eine vorzeichenlose Ganzzahl (unsigned int).

    Durchsuchen wir nun mal deinen Code, ob wir nicht irgendwo eine entsprechende Zeichenkette finden, welche 4 Zeichen lang ist und einer Ganzzahl sehr ähnlich sieht:

    Et voila:

    "3306",            // Port (Standard: 3306)
    

    Grüße...

    Heiko



  • Oder man macht es einfach so:

    error C2664: 'mysql_real_connect': Konvertierung des Parameters 6 von 'const char [5]' in 'unsigned int' nicht möglich
    1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist

    So ... also zur Funktion mysql_real_connect. Haben wir 🙂

    if(mysql_real_connect(
                              Connection,    // MySQL Handle
                              "localhost",    // Host Name
                              "root",        // User
                              "",            // Passwort
                              "test",        // Datenbank
                              "3306",            // Port (Standard: 3306)
                              NULL,            // Socket (Standard: NULL)
                              0) == NULL)
    

    Gut. dann mal den 6. Parameter:

    "3306",
    

    Auch gut. Jetzt mal sehen ... der sagt, der will eine unsignierte Ganzzahl haben? Ohh mist! Ich hab dem ja eine Zeichenkette übergeben! Na dann mal die " da weg und es geht! Man bin ich gut 😛



  • Ok jetzt hab ich die "" Weg gemacht, jetzt bekomm ich aber folgende Fehler

    1>Test SQl.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_close@4" in Funktion "_main".
    1>Test SQl.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_real_connect@32" in Funktion "_main".
    1>Test SQl.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_init@4" in Funktion "_main".

    Aber ich hab alle Liberys und Include datei von MYSQL gelinkt.
    Mhh komisch



  • hmm klingt danach als wären die funktionen nicht static sprich musst da evtl nen namespace einbinden noch? meine ich weis es nicht, nie mysql unter c++ verwendet. macht halt nur den anschein. einzige was mir so darauf einfällt.

    Edit: kann es leider nicht testen merke eben habe garkeine mysql.h



  • extern "C"{
    #include <mysql.h>
    }
    

    So sollte das gehen..
    rya.



  • #pragma comment(lib, "libmysql.lib")
    

    solltest du vergessen haben 😉 Nur der Header bringt dem nicht sooo viel 😃



  • Sorry, bin selbst erst seit einigen Wochen dabei, aber hast Du dir mal SOCI angesehen: http://soci.sourceforge.net?

    Gefaellt mir als Anfaenger wesentlich besser und der Support ueber die Mailllingliste ist ausgezeichnet.


Log in to reply