Android SQL Blob
我正在尝试将字节数组(byte[])存储到数据库中。我有字节数组、内容提供程序和数据库。当我尝试插入 Blob 时,插入返回 -1。有人可以告诉我如何完成这件事吗?
插入
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);
内容提供程序
mDB = mDBHelper.getWritableDatabase();
Long rowId = mDB.insert(mDBHelper.tableName(), null, aValues);
数据库
@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)
,它工作完美。
I'm trying to store and array of bytes (byte[]) into a DB. I have the array of bytes, a content provider and a database. When I try to insert into the Blob the insert returns -1. Can somebody show me how to get this done.
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);"); }
Like I said If I don't put the values.put(InDatabase.Columns.DATA, inData)
, it works perfect.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
所以实现是正确的,问题出在 SQLiteDatabaseHelper 上。我没有实现 onUpdate() 方法。因为我的数据库已经存在于具有不同布局的设备上(BLOB 字段不存在),所以插入方法失败。
快速卸载 .apk 解决了该问题。我还可以实现 onUpdate 方法,这样当数据库版本更改时,就会出现表删除或更新。
So the implementation was right, the problem was with the SQLiteDatabaseHelper. I did not implement the onUpdate() method. Because my database already existed on the device with a different layout (the BLOB field did not exist) the insert method failed.
A quick uninstall of the .apk fixed the problem. I could also implement the onUpdate method so when the database version changes there is a table drop or update.