SQLite 数据库的 onCreate() / onUpgrade() 方法何时运行
在本文中,我们将介绍 SQLite 数据库中的 onCreate() 和 onUpgrade() 方法何时运行。
阅读更多:SQLite 教程
SQLiteOpenHelper 类
在 Android 中,SQLiteOpenHelper 是一个用于管理 SQLite 数据库的帮助类。它提供了创建数据库、升级数据库版本以及执行 SQL 语句的功能。SQLiteOpenHelper 类有两个重要的方法:onCreate() 和 onUpgrade()。
onCreate() 方法
当我们首次访问一个不存在的数据库时,SQLiteOpenHelper 的 onCreate() 方法将被调用。在该方法中,我们可以执行创建数据库所需的表和初始化数据的任务。如果数据库已经存在,调用这个方法将没有任何效果。以下是一个示例:
public class MyDatabaseHelper extends SQLiteOpenHelper {
// ...
@Override
public void onCreate(SQLiteDatabase db) {
String createTableQuery = "CREATE TABLE my_table (id INTEGER PRIMARY KEY, name TEXT)";
db.execSQL(createTableQuery);
}
// ...
}
以上示例中,当首次访问数据库时,将创建一个名为 “my_table” 的表,包含 “id” 和 “name” 两个列。
onUpgrade() 方法
当我们需要对数据库进行升级时,SQLiteOpenHelper 的 onUpgrade() 方法将被调用。数据库升级可能包括添加新表、删除表、更改表结构等操作。在这个方法中,我们需要通过执行相应的 SQL 语句来更新数据库。以下是一个示例:
public class MyDatabaseHelper extends SQLiteOpenHelper {
// ...
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
String addColumnQuery = "ALTER TABLE my_table ADD COLUMN age INTEGER";
db.execSQL(addColumnQuery);
}
// ... 其他升级操作
}
// ...
}
以上示例将在数据库版本从 1 升级到 2 时,向 “my_table” 表中添加一个名为 “age” 的新列。
onCreate() 和 onUpgrade() 的调用时机
SQLiteOpenHelper 的 onCreate() 和 onUpgrade() 方法都是根据数据库版本进行调用的。
- onCreate() 方法只会在数据库首次创建时调用,通常在应用程序安装后首次使用数据库时触发。
- onUpgrade() 方法则在数据库版本发生变化时调用。当 newVersion 大于 oldVersion 时,表示要进行数据库的升级操作。
在使用 SQLiteOpenHelper 创建数据库对象时,需要传递一个数据库名称和版本号。当传递的版本号高于当前数据库的版本时,SQLiteOpenHelper 会触发 onUpgrade() 方法;当传递的版本号等于或小于当前数据库版本时,SQLiteOpenHelper 会触发 onCreate() 方法。
总结
在本文中,我们介绍了 SQLite 数据库中的 onCreate() 和 onUpgrade() 方法何时运行。通过这两个方法,我们可以方便地创建、升级数据库并进行数据库操作。对于需要创建表和添加、更新表结构的场景,onCreate() 和 onUpgrade() 是非常有用的方法。使用 SQLiteOpenHelper 类和这两个方法,我们能够更好地管理和操作 SQLite 数据库。
极客教程