Problem beim Zusammensetzen eines Strings



  • Hallo,

    ich möchte einen String zusammensetzen, den ich später in einen system(" "); Befehl einsetze.

    void Start(string Begin, string End)
    {
        string Output = "sqlite3 test.db 'select test from einstellungen where datetime between " + " \"" + Begin  + " \" AND \" " + End + " \"" + " >> test.txt";
        cout << Output;
    
    //system("sqlite3 test.db 'select test from einstellungen where datetime between "2015-01-14 20:04:00" AND "2015-01-14 20:10:00" ' >> test.txt");
    
    }
    

    Der zu erzeugende String soll nacher so wie das auskommentierte sein.
    Die Strings Begin und End sind jeweils schon so formatiert.

    Nur kann ich das nicht kompilieren, weiß aber nicht wo der Fehler in der Syntax ist.

    Danke und Gruß



  • Mindestens auf einer Seite des + mus ein std::string stehen, dann sollte es klappen. Du teilst deinen String ungeschickt auf. Wenn du die mit \" mit den anderen zusammenfasst, könnte die Bedingung erfüllt sein.

    Grundsätzlich sollte man in SQL Bindevariablen verwenden, statt die Werte direkt im SQL Text einzubetten.



  • Ich bekomme immer diese Fehlermeldun

    main.cpp|8|error: invalid operands of types ‘const char [80]’ and ‘const char [3]’ to binary ‘operator+’|
    

    Mittels Ergänzung von std::string bekomme ich die gleiche Meldung.



  • void Start(string Begin, string End)
    {
        string Output = "sqlite3 test.db 'select test from einstellungen where datetime between \"" + Begin  + " \" AND \" " + End + " \" >> test.txt";
        cout << Output;
    }
    

    funktioniert gaaaaanz toll



  • du mußt schreiben:

    std::string("sqlite3 .. between ") + ...
    


  • Es gibt auch übrigens eine API, um sqlite Datenbanken zu verwalte.
    Dann hast du verschiedene Funktionen für sowas und musst dich nicht mit systek rumschlagen


  • Mod

    sqlite schrieb:

    Es gibt auch übrigens eine API, um sqlite Datenbanken zu verwalte.
    Dann hast du verschiedene Funktionen für sowas und musst dich nicht mit systek rumschlagen

    Oder auch gleich allgemeine SQL-Bibliotheken, die dann (halbwegs) unabhängig von der unterliegenden Implementierung sind.


Anmelden zum Antworten