MFC und SQL-Befehle



  • Hallöchen...
    so ich bin neu hier in diesen Forum und auch MFC hab ich noch nicht lange.
    Bin gerade an einem kleineren Datenbankprojekt wo ich gerne per MFC eine kleine Suchmaske für eine Datenbank erstellen möchte.
    Arbeiten tue ich da erstmal mit einer einfachen Access Datenbank(ist halt Schulprojekt hätte auch lieber MySQL aber naja).
    Nun wollte ich gerne mal Wissen wie man da eigene SQL-Abfragen erstellen und einbinden kann.

    Sprich ich möchte sowas über die Maske steuern können(banales Beispiel):

    SELECT * FROM * WHERE *
    

    (Ja ich bin mir bewusst was dieser SQL-String Ausgeben würde...wie gesagt nur ein Beispiel)
    Also ganz normale SQL Befehle. Ich weiss dass es unter Access möglich ist (benutzt ja JetSQL soweit ich weiss und die Standardausdrücke sind da ja so weit vorhanden).

    Die Sternchen würden dann mit Strings aus Edit-Feldern/Dropdown-Listen etc mit einer Variable ersetzt werden (ihr ahnt das sicherlich schon).

    Nur hab ich halt keine Ahnung mit welchen Funktionen/Befehlen ich das da einbauen soll. Echt n Brett vorm Kopf. Hab bis jetzt auch noch nichts gescheites dazu gefunden was mir weiterhilft.

    Würde mich über jede Hilfe freuen. Danke schon mal im voraus _

    MFG



  • Du brauchst
    1. eine Datenbankverbindung, dh ein CDatabase-Objekt. Siehe Methode Open() für Connectionstring etc.

    2. ein CRecordset-Objekt. hier kannst du bei Open() dein SQL mitgeben und danach Zeile für Zeile durchwandern. Allerdings ist bei einem solchen Aufruf das Auslesen der Daten etwas mühsam. Leichter ist es, mit dem Wizard eine von CRecordset abgeleitet Klasse erstellen zu lassen, welche die gewünschten Felder beinhaltet und als Member bereitstellt. Nachteil: keine Flexibilität, Feldanzahl fixiert.

    Hoffe das hilft für den Start etwas.



  • Ja die Frage ist nun wie kann ich ihn mein SQL mitgeben? Sprich wo/wie soll cih den SQL-String verfassen?



  • Sprich wo/wie soll cih den SQL-String verfassen

    keine Ahnung! ich weiß ja nicht, was du wie zusammenbauen willst. Aber vielleicht in Edit-Feldern oder Combo-Boxen eines Dialogs. Das bleibt völlig dir überlassen. Die Strings zusammen ergeben dann den SQL-Befehl.

    Den SQL-String übergibst du der Open-Methode des RecordSet. Sieh dir doch die Klassen erst mal an.



  • Hier ist ein Artikel dazu:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-164310.html

    Bei CDatabase gibt es u.a. ExecuteSQL:

    CDatabase::ExecuteSQL
    void ExecuteSQL( LPCSTR lpszSQL );
    throw( CDBException );

    Damit kann man SQL-Befehle abschicken.

    Bei CRecordSet gibt es u.a. die Membervariablen
    m_strFilter und m_strSort
    wobei ersterer die Inhalte der WHERE-Klausel und zweiterer die Inhalte der ORDER BY-Klausel enthalten kann.



  • Perfekt...genau das was ich gesucht hab ^^ dankeschön ^^
    Trotzdem wundert mich warum "Reguläre" SQL-Ausdrücke nicht direkt eingegeben werden können. Unter VCL (soweit ich mich erinnern kann) war das möglich... naja.

    Also Dankeschön nochmal ^^

    Grüße


Anmelden zum Antworten