speichern Ich habe versucht, ein Objekt in SQLite zu speichern, und die Klasse des Objekts hat Serializable implementiert. Aber es gibt immer einen Fehler:Kann ich nicht Objekte in sqlite in meiner Android App
android.database.sqlite.SQLiteException: unrecognized token:
"[Ljava.lang.Object;@277c81d9" (code 1): , while compiling: insert
into mClass(classData) values(?)[Ljava.lang.Object;@277c81d9
Hier ist mein Code:
public boolean add(ReturnInfo ri) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
db = dh.getWritableDatabase();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(ri);
oos.flush();
byte[] data = bos.toByteArray();
bos.close();
oos.close();
db.execSQL("insert into mClass(classData) values(?)" + new Object[]{data});
db.close();
Log.e("db", "insert succeeded");
return true;
} catch (Exception e) {
e.printStackTrace();
Log.e("db", "insert failed");
return false;
}
Die Datenbank erfolgreich erstellt wurde, ich habe keine Ahnung, wo schief gelaufen ist.
Sicher ist es möglich, sicher gibt es keinen Syntaxfehler? (SQLSyntax) – Luftbaum
Sie scheinen String-Verkettung zu erwarten, um den Platzhalter Parameterwert zu ersetzen. Ihre SQL-Abfrage wird '" in mClass (classData) -Werte (?) [Ljava.lang.Object; @ 277c81d9 "' eingefügt, was kein gültiges SQL ist. Wollten Sie 'db.execSQL (" in mClass (classData) Werte einfügen (?) ", Daten)'? Aber ich denke, dass Sie 'compileStatement()' und 'bindBlob()' verwenden müssen. – dhke
Related: [wie man Bild als Blob in Sqlite speichern und wie man es abruft?] (Https://stackoverflow.com/questions/7331310/how-to-store-image-as-blob-in-sqlite-how- to-retrieve-it) – dhke