So verwenden Sie rawQuery, um einen Datensatz einzufügen

Ich muss einen Datensatz mit rawQuery Methode speichern, denn ich möchte das aktuelle Datum und die Uhrzeit ( datetime() ) einfügen, aber ich muss auch Strings mit Zitaten einfügen.

Also habe ich diesen Code geschrieben:

  • Wie man einen Sound-Effekt in Android spielt
  • Webview kann keine Cookies akzeptieren
  • Android Studio - Kann Aromen Code mit anderen Geschmacksrichtungen teilen?
  • EXTRA_PREVIOUS_SCAN_MODE gibt immer einen Fehler für Android Bluetooth zurück
  • Bestell-ID von Android-Abonnements
  • Getting ungültige android_key Parameter Fehler, nach dem ersten Mal Login in Facebook Android SDK
  •  String sql="INSERT INTO sms VALUES ( null, ?1, ?2, ?3, datetime())"; dbw.rawQuery(sql, new String[]{str1,str2,str3}); 

    Aber es wird nichts gespeichert … was ist los

    [BEARBEITEN]

    Auf diese Weise bekomme ich keine Fehler, aber der Datensatz ist nicht eingefügt.

     String mitt="mitt", dest="dest", text="text"; String sql="INSERT INTO sms VALUES ( null, ?, ?, ?, datetime('NOW'))"; dbw.rawQuery(sql, new String[]{mitt,dest,text}); 

    In diesem Moment ist die einzige Methode, die funktioniert, um einen Datensatz einzufügen (mit Anführungsproblem) ist execSQL(String s) .

  • Menü ISSUES mit einigen Android 4.x Geräten
  • Passing Headers bei der Verwendung von Browser Intent
  • Wie man bearbeitet 22.0.1 \ aapt.exe '' beendet mit Nicht-Null-Exit-Wert 1
  • Objekt nicht durch Thread gesperrt vor Benachrichtigung () in onPostExecute
  • Maximale Länge von Android Sqlite String?
  • Materialdialogbibliothek - verhindern, dass der Dialog auf onPositive Funktionsaufruf entlassen / geschlossen wird
  • 4 Solutions collect form web for “So verwenden Sie rawQuery, um einen Datensatz einzufügen”

    SQLite hat keinen nativen Datetime-Datenträgertyp. Es kann stattdessen eine Zeichenfolge oder eine Integer-Darstellung eines Datums speichern.

    Um Ihre Werte umzuwandeln, können Sie die in der Sqlite Date and Time Funktionen dokumentierten Datumszeitfunktionen verwenden

    Ihr anfänglicher Versuch ist fast richtig, aber Ihr datetime () Funktionsaufruf erfordert ein Argument von 'NOW' .

     String sql="INSERT INTO sms VALUES ( null, ?, ?, ?, datetime('NOW'))"; 

    Auch solltest du execSQL anstelle von rawQuery die erwartet, dass ein Recordset zurückgegeben wird.

     dbw.execSQL(sql, new String[]{str1,str2,str3}); 

    Sie können alle Spalten einfügen, um Daten einzufügen, indem Sie eine Feldliste nach dem Tabellennamen in Ihre Abfrage einfügen, wenn Sie nicht alle Werte einfügen

     String sql = "INSERT INTO sms(f1, f2, f3, f4)" + "VALUES ( null, ?, ?, ?, datetime('NOW'))"; 

    Eine andere Option, die möglich sein kann, ist die Verwendung eines Standard-Zeitstempels in SQLite , obwohl ich das nicht in Android versucht habe.

    Ich habe das Problem auf diese Weise gelöst:

     String sql="INSERT INTO sms VALUES (null,?,?,?,datetime('NOW'))"; dbw.execSQL(sql,new Object[]{mitt,dest,text}); 

    Schließlich kann ich jeden Char ohne Probleme aufbewahren !!!

     String sql="INSERT INTO sms VALUES ( null, '"+str1+"', '"+str2+"', '"+str3+"', datetime())"; dbw.rawQuery(sql, null); 

    Markiere die einzelnen Zitate.

    Versuchen Sie es so:

     ContentValues values; values=new ContentValues(); // values.put("field_name",value); values.put("id", 5); values.put("name", name); dbw.insert("table_name", null, values); 
    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.