Android SQLite存储自定义对象
在SQLite数据库中可存储的数据类型有NULL、INTEGER、REAL(浮点型)、TEXT、BOOL,一共是五种数据类型。在Android开发中,我们存储数据的一般的作法是数据库的属性就是类的成员变量,比如:
要存储一个人的姓名和年龄,在类中的是将它们定义为两个成员变量
class Person{
private String name;
private int age;
}
数据库中是将它们存储为两个字段
- name TEXT
- age INTEGER
现在我要介绍的这种方法是直接把Persond1实例存储在数据库里,也就是在数据库中存储对象。
具体做法是:将对象序列化为字节流字符串,然后将字节流字符串以TEXT类型存储在数据库中;在取数据时,将字节流反序列化为对象就行了。所以我们的实体类得是实现了Serializable接口的类。
下面是实例(下载):
- 首先是Person类,这是我们存储的实体类,只有set和get方法,并且实现了序列化接口
package com.databasetest;
import java.io.Serializable;
@SuppressWarnings("serial")
public class Person implements Serializable{
private String name;
private int age;
public Person(){
this("",0);//默认值
}
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 然后是数据库的辅助类
package com.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;