fehler beim einbinden von mysql



  • Bennnny schrieb:

    ich habe es eingebunden und es funktioniert immer noch nicht!

    Was für ein Fehler hast du denn noch? Wie ich bereits imletzten Thread gesagt habe... mysql.h + libmysql.lib und natürlich den Includepfad erweitern...



  • nochmal ganz ausführlich:

    ich mach ein neues projekt und speichere is in einem neuen ordner;

    nehm mir die mysql.h aus dem ordner, kopiere sie und füge sie in dem projektordner ein, den ich gerade angelegt habe;

    Ich schreibe in die Unit1.cpp: #include "mysql.h";

    Ich gehe auf Projekt->Optionen->Verzeichnisse/Bedingungen und wähle dort unter Include-Pfad den include-Ordner im mysql-server aus;

    Dann wähle ich unter Bibliothekspfad den Ordner lib\Opt im Mysql-server aus;

    Dann starte ich das programm und erhalte:

    [C++ Fehler] mysql_com.h(116): E2303 Typname erwartet
    [C++ Fehler] mysql_com.h(116): E2139 In Deklaration fehlt ;
    [C++ Fehler] mysql_com.h(180): E2147 Parameterdeklaration darf nicht mit 'SOCKET' beginnen
    

    was ist falsch??



  • Du musst die mysql.h in dem Ordner lassen in dem sie ist! Außerdem musst du wie man daran sieht, dass SOCKET nicht bekannt ist noch windows.h includieren! Das ist manchmal anders, in dem Fall brauchst du sie jedoch offensichtlich.
    Außerdem musst du noch wie gesagt libmysql.lib zum projekt hinzufügen!



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-117008.html
    Hier gehts auch um MySQL und Fehler....



  • vielen dank...das hat mir jetzt geholfen! jetz kann ich das programm starten...aber wenn ich jetz nen mysql-befehl verwende, bekomm ich folgenden fehler:

    EAccessViolation meldung:'Zugriffsverletzng bei Adresse 10007F54 in Modul 'LIBMYSQL.DLL'Lesen von Adresse 00000140'. Was ist da jetzt falsch? die dll hab ich in das projektverzeichnis kopiert!

    danke...



  • Evtl. ne falsche SQL-Query benutzt? Das führt schon mal zu zugriffsverletzungen, statt zu einem "normalen" MySQL-Error...

    Passiert meist dann, wenn es den Feld/Tabellen/Datenbank-Namen, der in der Query benutzt wird, nicht gibt.


  • Mod

    Hallo

    zeig mal den SQL-String her - sonst ist es wie stochern im Nebel

    Mfg
    Klaus



  • ich hab nur das hier drinne:

    MYSQL *init,*connection;
    
     mysql_init(init);
     connection=mysql_real_connect(init,"localhost","root","","healthxnet",0,NULL,0);
     mysql_close(init);
    

    is das falsch???



  • Ja.
    Ich glaube, du hast noch extreme Probleme mit den Grundlangen von C/C++. Du erstellst hier ja nur einen Pointer auf ein (noch nicht erstelltes) MySQL-Objekt. Dann übergibst du den Zeiger an mysq_init(). Das möchte jetzt dieses MySQL-Objekt verarbeiten, bekommt aber eine Zugriffsverletzung, da hinter dem Zeiger kein gültiger Speicher steckt (du hast ja nix mit new reserviert).
    Also ums kurz zu machen:

    MYSQL Mysql; //Kein * also auch kein Zeiger!
    mysql_init(&Mysql);
    if (!mysql_real_connect(&Mysql,Ip,Username,Password,DB,0,NULL,0))
    {
         MessageDlg(mysql_error(&Mysql),mtError,TMsgDlgButtons() << mbOK,0);
    }
    

    Ach und du benötigst natürlich keine zwei MYSQL Structs!
    Zitat von dev.mysql.com:

    Return Values

    A MYSQL* connection handle if the connection was successful, NULL if the connection was unsuccessful. For a successful connection, the return value is the same as the value of the first parameter.



  • ja vielen dank!!!...so funktionierts jetz!

    thx..benny


Anmelden zum Antworten