2017-03-29 3 views
0

Nach dem Verbinden mit einer Firebird-Datenbank mit C++ Builder kann ich kein Ergebnis von einer einfachen Auswahlanforderung erhalten.Wie kann ich das Ergebnis einer Anfrage nach dem Ausführen der Anfrage mit C++ Builder XE6 und Firebird erhalten?

Ich habe einige Verwirrung über viele Mitglieder der Klassen:

void __fastcall TForm2::btn1Click(TObject *Sender) 
{ TSQLConnection co = new TSQLConnection(this); 
    Base_Firebird *fb = new Base_Firebird() ; 
    bool bl = fb->Connecter(co); 
    String sqlstring = "select nom_action from T_ACTION where CLE_ACTION=6 ";  
    if (bl)  
     TSQLQuery *req = new TSQLQuery(NULL) ;  
    req->SQLConnection = co ; 
    req->SQL->Add(sqlstring); 
    req->Open() ; 
    } 

Mein Problem ist hier nach dem TSQLQuery Öffnen, ich weiß nicht, wie ich das Ergebnis bekommen und den Befehl auszuführen.

+0

Google und Delphi Einführung Artikel und Bücher lesen. Es ist eine primäre Sprache von C++ Builder und seiner Bibliotheken, sodass Sie viel mehr Ergebnisse einer solchen Suche erhalten. Wenn Sie nach dem Lesen von Delphi-Code übersetzen, können Sie ohne großen Aufwand den gleichen grundlegenden C++ - Code schreiben. –

+0

Was ist 'Base_Firebird' ??? –

+0

Base_Firebird ist ein Objekt in meinem Projekt, das ich in classebase.cpp in der Deklaration der Klasse angegeben habe ich habe eine Member namens Connecter (TSQLConnection * co) und ich bin sur funktioniert: D – Boumaiza

Antwort

0

Versuchen Sie das Ende Ihrer Unterprogramm zu so etwas wie dies zu ändern:

if (bl)  
{ /// you forgot compound operator here !!!!! 
     TSQLQuery *req = new TSQLQuery(this) ;  
    req->SQLConnection = co ; 
    req->SQL->Text = sqlstring; 
    req->Open() ; 

    int j = 0; 
    while(!req->EOF()) 
    { 
     ++j; 
     String Value = req->Fields[0]->AsString; 
     ShowMessageFmt("Row %d ==> Value: %s ", ARRAYOFCONST((j, Value))); 

     // String MSG = Format("Row %d ==> Value: %s ", ARRAYOFCONST((j, Value))); 
     // ShowMessage(MSG); 

    req -> Next(); 
    }; 
    req->Close(); 
    ShowMessage("Data over."); 
    } 
    req -> Free(); // maybe "delete req;" would work too, dunno 
} 

zu prüfen:

0

lesen Embarcadero-Dokumentation. Es gibt ganze Kapitel, wie die SQL-Komponenten arbeiten, die Sie verwenden, einschließlich:

How To Perform Database Procedures

Navigating Datasets

Using dbExpress

Using dbExpress Components Index

Using TSQLQuery

Data.SqlExpr.TSQLQuery

Zum Beispiel:

void __fastcall TForm2::btn1Click(TObject *Sender) 
{ 
    TSQLConnection *co = new TSQLConnection(NULL); 
    Base_Firebird *fb = new Base_Firebird(); 
    if (fb->Connecter(co)) 
    { 
     TSQLQuery *req = new TSQLQuery(NULL); 
     req->SQLConnection = co; 
     req->SQL->Text = "select nom_action from T_ACTION where CLE_ACTION=6"; 
     req->Open(); 
     while (!req->Eof) 
     { 
      // use req->Fields as needed... 
      req->Next(); 
     } 
     delete req; 
    } 
    delete fb; 
    delete co; 
} 
Verwandte Themen