2017-12-03 1 views
-1

Zum Beispiel hier möchte ich die Formel datetime('now', '+63 minutes') einzufügen:Können Inhaltswerte Formeln in SQLite einfügen?

ContentValues cv = new ContentValues(); 
    cv.put("_id", _id); 
    cv.put("name", name); 
    cv.put("datetime", "datetime('now', '+" + minutes+hours*60 + "minutes'"); 
    db.insert("table", null, cv); 

Standardverhalten ist die Spalte in die Zeichenfolge „Datetime (‚jetzt‘, '63 Minuten)“ anstelle der Berechnung der Formel einstellen .

+0

Warum versuchen Sie es nicht zuerst und dann Fehler wenn –

+0

Sie können, aber nur ** wörtlich ** (dh: Sie ** kann es nicht in einer Abfrage ** als eine berechnete Spalte verwenden): Fügen Sie es einfach ein als ein String-Wert (durch Entkommen der Zeichenkette und Verdoppeln der Apostrophe). Auf der anderen Seite möchten Sie vielleicht eine berechnete Spalte in einer Abfrage ** direkt ** verwenden. Keine Notwendigkeit, solche naiven Methoden auszuprobieren, die nur Fehler und Wahnvorstellungen zurückgeben. –

Antwort

1

Nr

ContentValues Werte werden als literale Werte gebunden und nicht als SQL-Ausdrücke ausgewertet. Unter der Haube verwendet es sqlite variable binding.

Wie in Ihrem Literal beobachtet, erhalten Sie den literalen String-Wert in der Datenbank.