首页 文章

Android SQL Blob

提问于
浏览
1

我正在尝试将字节数组(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 回答

  • 0

    所以实现是正确的,问题出在SQLiteDatabaseHelper上 . 我没有实现onUpdate()方法 . 因为我的数据库已经存在于具有不同布局的设备上(BLOB字段不存在),所以插入方法失败 .

    快速卸载.apk修复了问题 . 我也可以实现onUpdate方法,这样当数据库版本发生变化时,会有一个表丢弃或更新 .

相关问题