Announcement

Collapse
No announcement yet.

Vergleich von SQL Datenmenge in c++

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vergleich von SQL Datenmenge in c++

    Hallo,

    nachdem mir schon einmal hier weitergeholfen wurde versuche ich es nun noch einmal

    Ich habe jetzt schon länger versucht einen vergleich durchzuführen aber bekommen nicht das gewünschte ergebnis:


    //------------------------------------------
    char buffer[20];
    char* string="Test";
    for(int i=0;i<=strlen(DBGrid1->Fields[9]->Text.c_str());i++)
    {
    buffer[i] = DBGrid1->Fields[9]->Text.c_str()[i];
    }
    buffer[i]='\0';
    Form1->Panel23->Caption=buffer;
    if (buffer == string) // Im Buffer steht"Test\0\0\0..."
    Form1->Panel22->Caption="Gleich";
    else Form1->Panel22->Caption="n Gleich";
    //--------------------------------------------

    Ich will einfach nur den enthaltenden text in der variable mit der Datenmenge
    eines feldes der Datenbank vergleichen. Im Buffer steht der o.g. wert drin der eigtl. dem string entspricht!?! Gibts da nen tricky ?

    Naja da ich gerade ne MySQL Datenbank an eine c++ oberfläche anbinde bin ich ganz neu auf dem gebiet...hat evtl. jemand kleine test progs. für sowas oder weiss wo ich sowas herbekommen kann !? Das wäre ne grosse hilfe

    Die Bsp. progs. vom Borland5 sind nicht gerade hilfreich wie ich finde...

    Ich sag schonmal Danke!!!

    Mfg

  • #2
    ähh ich beschreibe das problem noch einmal deutlicher....

    Also der vergleich gilt eigtl. einem leerem string.

    Bei mySQL eben :
    Select * from table Where blabla IS NULL

    Das klappt auch soweit nur ich weiss leider nicht wie ich über c++ diese anfrage stellen kann. Klar mit einem Query bekomme ich auch meine gewünschte datenmenge,funktioniert soweit....
    Aber ich möchte diesen Wert der eben Null ist vergleichen können bzw. in einer variablen später verarbeiten können.

    Vieleicht ne idee?

    Comment


    • #3
      Hallo,

      Dei Fehler liegt darin, dass Du zwei char-Buffer mittels == vergleichen willst, tatsächlich aber die Pointer auf die beiden Strukturen vergleichst (die immer ungleich sind!). Nutze entweder strcmp() oder benutze/vergleiche gleich die AnsiStrings, denn es ist unnötig, diese mittels c_str() in char-Strings zu wandeln (und schon gar nicht mit diesem "Schleifenungetüm".
      Also:
      Code:
      // wenn schon char, dann
      strcpy(buffer, DBGrid1->Fields[9]->Text.c_str());
      ...
      //    if (buffer == string)    // falsch!
      if (!strcmp(buffer, string))
      ...
      // oder eben einfacher:
      String CheckStr = "Test";
      if (DBGrid1->Fields[9]->AsString == ChkStr)
      ...
      // oder wenn's wirklich nur darum geht, NULL-Werte zu erkennen:
      if (DBGrid1->Fields[9]->IsNull)
      ...
      Gruß Knut
      Zuletzt editiert von Knut Lohse; 03.10.2007, 15:26. Reason: erweitert

      Comment


      • #4
        Ja danke für deinen vorschlag....werde demnächst nochmal an diesem problem ansetzen....

        Comment

        Working...
        X