代码如下:public class DBOpenHelper extends SQLiteOpenHelper { // 类没有实例化,不能用作父类构造器的参数,必须声明为静态 public DBOpenHelper(Context context, int version) { super(context, “SQLite.db”, null, version); // 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null代表使用系统默认的游标工厂; } @Override public void onCreate(SQLiteDatabase d 在Android开发中,SQLite是一个轻量级的数据库引擎,它被集成到Android系统中,用于在本地存储数据。SQLiteOpenHelper是Android SDK提供的一种方便管理SQLite数据库的类,它主要用于数据库的创建、升级以及版本管理。下面我们将详细讲解如何基于SQLiteOpenHelper进行CRUD(Create、Read、Update、Delete)操作。 我们创建一个继承自SQLiteOpenHelper的类,如DBOpenHelper。在构造函数中,传入上下文Context和数据库版本号version。`super()`调用父类SQLiteOpenHelper的构造函数,用于初始化数据库的基本信息,包括数据库名("SQLite.db")、游标工厂(null表示使用默认工厂)和版本号。 `onCreate()`方法会在数据库首次创建时被调用。在这里,我们使用`SQLiteDatabase.execSQL()`执行SQL语句来创建表`person`,包含两个字段:personid(主键,自动增长)和name(varchar类型,长度限制为20)。 `onUpgrade()`方法则在数据库版本号提升时执行,用于处理数据库升级。在示例中,当版本号从oldVersion升级到newVersion时,我们在person表中添加了phone列。 接下来,我们创建一个DBOpenHelper的实例,并调用`getWritableDatabase()`来打开或创建数据库。这个方法会检查数据库是否存在,如果不存在,它会创建数据库并调用`onCreate()`;如果已存在,它将打开数据库。 在PersonService类中,我们实现了对person表的CRUD操作: 1. **保存(Create)**:`save()`方法通过`getWritableDatabase()`获取可写数据库实例,然后使用`execSQL()`执行SQL插入语句,将Person对象的name和phone属性插入到person表中。 2. **删除(Delete)**:`delete()`方法同样使用`getWritableDatabase()`,执行SQL删除语句,根据personid删除表中的记录。 3. **更新(Update)**:`update()`方法获取可写数据库,执行SQL更新语句,根据personid更新对应的name和phone字段。 4. **查询(Read)**:`find()`方法通过`getReadableDatabase()`获取只读数据库实例。如果磁盘空间足够,这通常会返回与`getWritableDatabase()`相同的数据库实例。然后,我们使用`rawQuery()`执行SQL查询语句,根据personid获取特定记录。`moveToFirst()`确保游标指向第一条结果,最后返回一个Person对象。 在Android中,SQLiteOpenHelper是非常重要的工具,因为它简化了数据库的生命周期管理和SQL操作。通过合理使用`onCreate()`和`onUpgrade()`,开发者可以轻松地创建和升级数据库结构。同时,`getWritableDatabase()`和`getReadableDatabase()`提供了安全的数据库访问方式,确保了数据的一致性和完整性。在实际应用中,开发者可以根据需求对这些基础方法进行扩展和优化,实现更复杂的业务逻辑。
- 粉丝: 8
- 资源: 954
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0