MYSQL Abfrage in C++-Funktion



  • Hi

    Ich habe ein Problem und zwar will ich die MYSQL Abfrage in eine Funktion auslagern.
    Das klappt so weit auch ganz gut, jedoch habe ich noch ein Problem mit der Rückgabe des Ergebnisses aus der Funktion.

    Hier ist der Abschnitt, der für die Abfrage der Datenbank zuständig ist:

    if (mysql_query(mysql, query)) {
       fprintf(stderr, "%s\n", mysql_error(mysql));
    }
    result = mysql_store_result(mysql);
    
    char *Ergebnis[ (int) mysql_num_rows (result) ];
    
    while ((row = mysql_fetch_row(result)) != NULL)
    {
       Ergebnis[i] = row[0];
       i++;
    }
    

    Jetzt möchte ich das "Ergebnis" als "result" aus der Funktion zurückgeben.
    Das Array "Ergebnis" besteht aus Dateipfaden zu bestimmten Dateien.

    Also kann wir jemand helfen wie ich das "2-dimensionales char-Array" als Rückgabewert übergeben kann?



  • Wäre es nicht sinnvoller, gleich eine C++ Library für MySQl zu benutzen, z.B. MySQL++? Diese benutzt auch die Standard Container, d.h. std::vector<T> etc.

    Aber auch bei deiner jetzigen Funktion solltest du std::vector<const char *> (oder std::vectorstd::string) als Rückgabewert nutzen.



  • Wenn ich das mal richtig formatiere (Warum machst Du das eigentlich nicht selbst?) sieht das so aus:

    if (mysql_query(mysql, query)) {
        fprintf(stderr, "%s\n", mysql_error(mysql));
      }
      result = mysql_store_result(mysql);
    
      char *Ergebnis[ (int) mysql_num_rows (result) ];
    
      while ((row = mysql_fetch_row(result)) != NULL)
        {
          Ergebnis[i] = row[0];
          i++;
        }
    

    Und Zeile 6 ist noch nicht mal C++. Das ist ein VLA und die gibt es nur in C.
    Bist Du sicher, dass Du C++ machen willst?

    Ausserdem fehlt da ja die Hälfte - fast alle Deklarationen z.B..


Anmelden zum Antworten