Android中操作数据库主要有两种方法:使用SQLiteOpenHelper 和使用ContentProvider。 (一)使用SQLiteOpenHelper:一个抽象类,用于提供管理数据库版本并维护创建数据库的接口。其子类必须实现onCreate(SQLiteDatabase)和onUpdate(SQLiteDatabase, int, int)方法,也可以实现可选方法onOpen(SQLiteDatabase)。另外,也必须重写父类的构造函数。 如果数据库存在则这个类将负责打开数据库,如果不存在则创建一个新的数据库。当Android检测到你在引用一个旧数据库(根据版本号判断)时,它将调用onUpdate()方法。 1.添加数据: 》实例化一个继承了SQLiteOpenHelper抽象类的类,(例如为events); 》获取SQLiteDatabase对象:SQLiteDatabase db = events.getWritableDatabase(); 》定义ContentValues的一个对象用于存储数据:ContentValues values = new ContentValues(); 》调用ContentValues的put方法装载数据; 》将数据插入数据库中:db.insertOrThrow(TABLE_NAME, null, values); 其中SQLiteOpenHelper类中的getReadableDatabase()和getWritableDatabase()及close()方法都是同步方法。 顾名思义,如果insertOrThrow()执行失败,它可以抛出一个SQLException类型的异常。无需使用一个throws关键字来声明该异常,因为它是一个RuntimeException,而不是一个检查异常。但是,如果你喜欢,仍然可以在一个try/catch块中处理它,就像处理任何其他异常一样。如果未处理它并且存在一个错误,程序将终止,并将一条回溯信息转储到Android日志中。 2.查询数据: 因为无需因查询而修改数据库,所以可以只调用getReadableDatabase()获得一个只读句柄。 》SQLiteDatabase db = events.getReadableDatabase(); 》Cursor cursor = db.query(TABLE_NAME, FROM, null,null,null,null,ORDER_BY); 》startManagingCursor(cursor); 其中startManagerCursor():告诉活动应根据该活动的生命周期来管理光标的生命周期。例如:当活动被暂停时,它将自动停止用光标,然后在活动重启时重新查询该光标。当活动终止时,所有托管的光标都将关闭。 3:数据绑定 用于数据表中存在大量数据的情况下,可以提高程序的运行速度。 如果要将大量的数据显示在View中,并将这些数据追加在一个字符串中,则可能耗尽所有内存。 ListView与Adapter的结合使用。 如果数据源是在XML中定义的一个数组,则使用ArrayAdapter;如果数据源是一个来自于数据库查询的Cursor对象,则使用SimpleCursorAdapter。 Java代码 public class DatabaseHelper extends SQLiteOpenHelper { //构造,调用父类构造,数据库名字,版本号(传入更大的版本号可以让数据库升级,onUpgrade被调用)