我正在尝试将字节数组(byte [])存储到DB中 . 我有字节数组,内容提供者和数据库 . 当我尝试插入Blob时,插入返回-1 . 有人可以告诉我如何完成这项工作 .
Insert
byte[] inData = nw.receive();
ContentValues values = new ContentValues();
values.put(InDatabase.Columns.DATA, inData);
values.put(InDatabase.Columns.SIZE, inData.length);
NetService.this.getContentResolver().insert(InContentProvider.CONTENT_URI, values);
Content Provider
mDB = mDBHelper.getWritableDatabase();
Long rowId = mDB.insert(mDBHelper.tableName(), null, aValues);
Database
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE table " + TABLE_NAME + "(id INTEGER PRIMARY KEY AUTOINCREMENT, data BLOB, size INTEGER);");
}
就像我说的如果我不放 values.put(InDatabase.Columns.DATA, inData)
,它就完美了 .
1 回答
所以实现是正确的,问题出在SQLiteDatabaseHelper上 . 我没有实现onUpdate()方法 . 因为我的数据库已经存在于具有不同布局的设备上(BLOB字段不存在),所以插入方法失败 .
快速卸载.apk修复了问题 . 我也可以实现onUpdate方法,这样当数据库版本发生变化时,会有一个表丢弃或更新 .