オブジェクトをsqliteに保存しようとしましたが、オブジェクトのクラスがSerializableを実装しました。私のアンドロイドアプリでsqliteにオブジェクトを保存できません
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;
}
データベースが正常に作成された、私は間違っていた見当がつかない:
android.database.sqlite.SQLiteException: unrecognized token:
"[Ljava.lang.Object;@277c81d9" (code 1): , while compiling: insert
into mClass(classData) values(?)[Ljava.lang.Object;@277c81d9
はここに私のコードです。しかし、常にエラーがあります。
確かに可能ですが、構文エラーはありませんか? (SQLSyntax) – Luftbaum
パラメータ値のプレースホルダを置き換える文字列連結が必要なようです。あなたのSQLクエリはmClass(classData)の値(?)[Ljava.lang.Object; @ 277c81d9 "'に挿入されます。これは有効なSQLではありません。 'db.execSQL(" mClass(classData)values(?) "、data)'に挿入しますか?しかし、私の推測では 'compileStatement()'と 'bindBlob()'を使う必要があるということです。 – dhke
関連:[画像をSqliteにBLOBとして保存する方法とそれを取得する方法](https://stackoverflow.com/questions/7331310/how-to-store-image-as-blob-in-sqlite-how- to-retrieve-it) – dhke