Abfragenproblem



  • Hallo,

    ich versuche mich jetzt an Datenbanken und bin noch Anfänger. Ich habe ein Programm mit C++ (MFC) erstellt und möchte nun bestimmte Daten aus einer SQLite DB abfragen. Ich benutze einen SQLite Wrapper, der den Code etwas MFC freundlicher macht.

    Ich möchte eine einfache Abfrage starten und die Straße von einer bestimmten Person ausgegeben bekommen:

    BOOL fTest;
    CDbSQLite sqlite;
    
    fTest = sqlite.Open(m_szDbFile);
    
    if(!fTest)
    {
       CString szError = _T("Could not open ");
       szError += m_szDbFile;
       AfxMessageBox(szError);
       return;
    }
    
    m_szTest = _T("INVALID STATEMENT");
    
    // Abfrage nach Straße von Anton Weber
    CSqlStatement* stmt = sqlite.Statement(_T("SELECT adressen.Strasse FROM adressen WHERE((adressen.Name) LIKE 'Anton Weber'"));
    
    // Ausgabe des Straßennamens
    CString text; 
    text = stmt->ValueString(0); //Fehler
    MessageBox(text);
    

    In der Zeile

    text = stmt->ValueString(0);
    

    kommt ein Fehler. Die Funktion ValueString schaut so aus:

    LPCTSTR CSqlStatement::ValueString(int pos_zero_indexed)
    {
       m_szText.Format(_T("%s"), _sqlite3_column_text(m_stmt, pos_zero_indexed));
       return m_szText;
    }
    

    Ich weiß nicht was ich ValueString übergeben soll. Vielleicht verwende ich auch einfach die falsche Funktion. Für Hilfe wäre ich sehr dankbar.



  • Mach doch mal einen Debug und schau welcher Fehler.



  • Hallo,

    Stefan H. schrieb:

    In der Zeile

    text = stmt->ValueString(0);
    

    kommt ein Fehler.

    schreibe doch bitte das nächste Mal dazu, welchen Wrapper du nutzt, das hat mich immerhin die Zeit einer Google-Suche gekostet 😉

    Der Wrapper basiert auf dem hier:

    http://www.adp-gmbh.ch/sqlite/wrapper.html

    Und dort gibt es ein Beispiel, das zeigt, dass du nur vergessen hast, dich auf eine (die erste) gültige Zeile der Ergebnismenge zu bewegen, bevor du ValueString aufrufen darfst, mit NextRow, siehe:

    http://www.adp-gmbh.ch/sqlite/wrapper_test_4.html

    Und verwende den LIKE-Operator nicht, wenn du nicht nach einem Muster suchst.

    MfG,

    Probe-Nutzer



  • Vielen Dank für die Hilfe. Jetzt klappt alles 🙂


Anmelden zum Antworten