mysql will nicht



  • Ich habe einen Code geschrieben, der schaut ob ein Nickname schon vergeben ist, er geht aber nicht richtig

    MYSQL     *mySQL;
     MYSQL_ROW row;
     MYSQL_RES *res;
     String argument;
    
     mySQL = mysql_init(0);
     if (!mysql_real_connect(mySQL, "XXX", "XXX", "XXX", "XXX", 0, NULL, 0))
     {
      Application->MessageBoxA("Verbindung zur Datenbank konnte nicht hergestellt werden.\nEventuel ist ihr Pc oder der Server nicht mit dem Internet verbunden.", "ERROR", 0);
     }
     else
     {
      argument = "SELECT FROM abcxyz WHERE Nickname == '"+Text1->Text+"';";
      mysql_query(mySQL, argument.c_str());
      res = mysql_use_result(mySQL);
      row = mysql_fetch_row(res);                      //Hier steigt der Code aus
      if (row != NULL)
      {
       Application->MessageBoxA("Dieser Nickname ist schon vergeben!", "Nickname", 0);
      }
      else
      {
    
      }
     }
     mysql_close(mySQL);
    

    Und der Fehler kommt:

    ---------------------------
    snake
    ---------------------------
    Zugriffsverletzung bei Adresse 1000E2F6 in Modul 'LIBMYSQL.DLL'. Lesen von Adresse 0000000C.
    ---------------------------
    OK
    ---------------------------

    Ich hoffe ihr könnt mir helfen,

    Stratege993



  • Also bisher ist mir in deinem Code nur aufgefallen, dass es statt "==" eher "=" heißen müsste, also in der Where Klausel deiner SQL Anweisung. Zumindest sollte damit die if Abfrage ordnungsgemäß funktionieren. Warum nun aber eine Zugriffsverletzung auftritt und nicht wie ich erwarten würde, einfach gar nichts, da es eine ungültige SQL Anweisung ist, weiß ich im Moment auch nicht.



  • Dieser Thread wurde von Moderator/in Phoemuex aus dem Forum C++ in das Forum Datenbanken verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ok das mit dem =, == habe ich falsch und ausgebessert. Trotzdem kommt der Fehler.
    Zur Verschiebung: Also ich meine es ist ein Problem mit dem C++ Code und nicht mit der SQL Anweisung. Deshalb habe ich es in C++ getan, aber ihr könnt es auch in Datenbanken lassen.

    Stratege993



  • wie der vorgänger schon gesagt hat, nur ein einfaches gleichheitszeichen.
    darüber hinaus ist die sql noch weiter falsch

    aus
    argument = "SELECT FROM abcxyz WHERE Nickname == '"+Text1->Text+"';";

    wird
    argument = "SELECT FROM abcxyz WHERE Nickname = '"+Text1->Text+"'";

    semikolon entfällt.

    gebe dir argument bitte aus, und packe es direkt über einen sql monitor als abfrage hinein. dann kannst du weiter prüfen, ob ev. dein tabelle- oder spaltename falsch geschrieben sind.

    wenn er nichts zum "fetchen" findet, ist eben nichts gekommen 😉

    bitte gebe dir die sql fehlermeldungen noch mit in den quelltext aus.



  • Also Danke für den Fehler, aber ich hab jetzt meinen Dritten und letzten Fehler in meiner Zeile gefunden. Ich habe das * nach SELECT vergessen, jetzt gehts. Danke an euch,

    Stratege993



  • dachte, du hast aus anonymitätsgründen die selectierten spaltenname einfach gelöscht.. stimmt. am besten einfach die sql mal ausgeben, dann fällt viel auf.


Anmelden zum Antworten