ContentProvider
ContentProvider 是Android的四大组件之一,对于许多比较复杂的数据的处理,许多APP都是采用ContentProvider,来创建一个DB数据库,从而可以统一对DB数据进行处理。
下面的这个样例,是创建一个员工管理的DB数据库,员工信息包括姓名,年龄,性别。我们可以对这个DB数据库进行基本的增,删,查,改操作。
用户界面如下图:
关键的代码:
1.Employees.java
public class Employees {
public static final String AUTHORITY = "com.konka.provider.Employees";
private Employees() {}
// 内部类
public static final class Employee implements BaseColumns {
// 构造方法
private Employee() {}
// 访问Uri
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/employee");
// 内容类型
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.amaker.employees";
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.amaker.employees";
// 默认排序常量
public static final String DEFAULT_SORT_ORDER = "name DESC";// 按姓名排序
// 表字段常量
public static final String NAME = "name"; // 姓名
public static final String GENDER= "gender"; // 性别
public static final String AGE = "age"; // 年龄
}
}
2.DBHelper.java
/**
*
* 数据库工具类
*/
public class DBHelper extends SQLiteOpenHelper{
// 数据库名称常量
private static final String DATABASE_NAME = "Employees.db";
// 数据库版本常量
private static final int DATABASE_VERSION = 1;
// 表名称常量
public static final String EMPLOYEES_TABLE_NAME = "employee";
// 构造方法
public DBHelper(Context context) {
// 创建数据库
super(context, DATABASE_NAME,null, DATABASE_VERSION);
}
// 创建时调用
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + EMPLOYEES_TABLE_NAME + " ("
+ Employee._ID + " INTEGER PRIMARY KEY,"
+ Employee.NAME + " TEXT,"
+ Employee.GENDER + " TEXT,"
+ Employee.AGE + " INTEGER"