在前面的编写最简单的Content Provider的示例是很粗糙的,目的是让读者尽快了解怎样编写和使用Content provider。 其中一个事情是,如果重复启动该应用,会多次插入,产生重复的记录并显示到activity中。在上个例子中没有做处理,比如判断是否存在数据库等等。 Android为SQLite提供了便利的API,方便自动创建新的数据库或者升级数据库。其实本文的示例并不一定要在Content provider使用情况下,是在android sqlite编程下都可以用的。 android提供了这个类: android.database.sqlite.SQLiteOpenHelper 有两个抽象方法需要继承以后实现: public void onCreate(SQLiteDatabase database) public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) 其中第一个onCreate方法,在实现代码中要写出怎样创建你需要的数据库和表,以及一些初始数据。这实际上是个回调(callback),android会自动判断是否有该数据库,如果没有,就调用这个方法创建。 onUpgrade方法,在这种情况下调用,你的应用中的sqlite数据库升级了,比如,表结构都发生了变化,那么android就会调用这个方法升级数据库。你需要实现这个方法,指出如何升级数据库,在下面示例中,是很简单的一种做法,就是删除就版本数据库,重新创建新版本的数据库。复杂的做法(也是平滑升级的做法)是,把旧数据库中的信息导入到新数据库中。 日志引用简单使用SimpleCursorAdapter编写完整的Content provider示例 发送文章为PDF