[C++Builder] ADODataSet für Datenmenge verwenden?



  • Hallo zusammen,

    ich möchte aus einer MySQL Datenbank eine Ergebnismenge holen und mit dieser weitere Verarbeitungen vornehmen.

    Zum Verbinden nehme ich eine ADOConnection - Kompoente; Für einen SQL-Befehl mit Rückgabe einer Menge nimmt man doch jetzt eine ADODataSet - Komponente oder?

    Wenn ich jetzt z.B. folgenden SQL Befehl ausführe

    dataset->CommandText = "select Vorname from mitarbeiter";
    dataset->Open()
    

    möchte ich alle Vornamen der Mitarbeiter als Ergebnismenge bekommen. Meine Frage ist jetzt wo und vor allem wie ich diese Ergebnismenge abrufe?

    Mit welcher Methode kann ich die einzelnen Ergebnisse ansprechen?

    Vielen Dank für die Antworten

    Gruß



  • Nimm ein ADOQuery.

    if (ADOQuery->Active)
       ADOQuery Close();
    
    ADOQuery->SQL->Clear();
    ADOQuery->SQL->Add("select ...");
    ADOQuery Open(); // Bei Selects
    ADOQuery Execute(); //insert update usw.
    

    Die Query enthält Dein Recordset.

    AnsiString meinWert = ADOQuery->FieldByName("MeinFeld")->AsString;
    


  • Danke schon mal für deine Hilfe!

    Ich frage mich jetzt gerade, wie ich bei diesem Befehl:

    AnsiString meinWert = ADOQuery->FieldByName("MeinFeld")->AsString;
    

    den Wert den ich gerne möchte bekomm?!?!

    Was gibst du mit "MeinFeld" an? Außerdem lässt dich dieser Befehl nicht bei mir in dieser Form angeben. Das "->AsString" wird nicht unterstützt!

    Wenn der SQL Befehl ausgeführt wurde dann wir also der Query-Komponente die Ergebnismenge zugeordnet ??
    Kann ich auf diese Ergenismenge wie auf ein Array zugreifen?

    Ich möchte zum Beispiel nach dem SQL-Befehl "select Vorname from mitarbeiter" folgende Ergebnismenge:

    Arthur
    Stefan
    Peter
    Gabi

    usw.

    Nun möchte ich gerne auf das 2.Element der Ergebnismenge zugreifen; z.B.

    Label1->Caption = query->Item[1];

    oder so!
    Geht so was? Bzw. wie löst diese Kompoente dieses Problem?

    Gruß



  • AsString funktioniert bei ADOQuery, kontrollier also am besten die Bezeichnungen

    Das "MeinFeld" liefert dir den Wert der Spalte in der Zeile wo der Datensatzzeiger gerade ist (also muss in deinem Fall dort "Vorname" stehen).

    zur Ergebnismenge:
    mit First(), Next(), Prior(), Last() (und anderen -> siehe Hilfe) kannst du den Datensatzzeiger auf einen anderen Datensatz positionieren und dann den Wert auslesen. In deinem Fall z.B.

    ADOQuery->First()
    ADOQuery->Moveby(1)

    oder

    ADOQuery->First()
    ADOQuery->Next()

    oder du schränkst von Anfang an deine SQL-Abfrage ein


Anmelden zum Antworten