如何将 JSON 对象存储在 SQLite 数据库中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将 JSON 对象存储在 SQLite 数据库中相关的知识,希望对你有一定的参考价值。

参考技术A 将json对象的
键值对,转化为
ContentValues
对象中的键值对(键
为表中的字段名),然后插入数据库就可以了。
dbManager.insert(TABLENAME,
null,
values);
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!

Android 使用SQLite存储以及读取Drawable对象

在进行Android开发过程中,我们经常会接触到Drawable对象,那么,若要使用数据库来进行存储及读取,该如何实现?

一、存储

//第一步,将Drawable对象转化为Bitmap对象
Bitmap bmp = (((BitmapDrawable)tmp.image).getBitmap());
//第二步,声明并创建一个输出字节流对象
ByteArrayOutputStream os = new ByteArrayOutputStream();
//第三步,调用compress将Bitmap对象压缩为PNG格式,第二个参数为PNG图片质量,第三个参数为接收容器,即输出字节流os
bmp.compress(Bitmap.CompressFormat.PNG, 100, os);
//第四步,将输出字节流转换为字节数组,并直接进行存储数据库操作,注意,所对应的列的数据类型应该是BLOB类型
ContentValues values = new ContentValues();
values.put("image", os.toByteArray());
db.insert("apps", null, values);
db.close();

代码看起来比较繁琐,是因为过程的确挺繁琐的,不过可以简单的总结为:

Drawable→Bitmap→ByteArrayOutputStream→SQLite

二、读取

//第一步,从数据库中读取出相应数据,并保存在字节数组中  
byte[] blob = cursor.getBlob(cursor.getColumnIndex("image"));  
//第二步,调用BitmapFactory的解码方法decodeByteArray把字节数组转换为Bitmap对象  
Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length);  
//第三步,调用BitmapDrawable构造函数生成一个BitmapDrawable对象,该对象继承Drawable对象,所以在需要处直接使用该对象即可  
BitmapDrawable bd = new BitmapDrawable(bmp);  

由于BitmapDrawable是Drawable的子类,所以直接使用就行了。

很显然,读取是存储的相反过程,代码思路也差不多,但实现起来简单很多,总结思路为:

SQLite→byte[]→Bitmap→BitmapDrawable

以上是关于如何将 JSON 对象存储在 SQLite 数据库中的主要内容,如果未能解决你的问题,请参考以下文章

js对象在sqlite中保存和读取

如何将大型 JSON 数据从服务器存储到 SQLITE Android?

以 JSON 或 SQLITE (Android) 存储数据

如何实现嵌套 json 到数据库 SQLite?

Android SQLite, JSON, List 用于存储常量对象

如何在ios中将Json数据存储到Sqlite中