Android SQL Blob

发布于 2024-12-10 13:44:08 字数 866 浏览 1 评论 0原文

我正在尝试将字节数组(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

肥爪爪 2024-12-17 13:44:08

所以实现是正确的,问题出在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文