SQLite SQLiteDatabase onCreate() / onUpgrade() 方法在何时运行
在本文中,我们将介绍SQLiteOpenHelper类中的onCreate()和onUpgrade()方法在何时运行。SQLite是一种轻量级的嵌入式数据库引擎,用于在本地存储和管理数据。在Android开发中,我们经常使用SQLite数据库来存储和检索数据。
阅读更多:SQLite 教程
SQLiteOpenHelper类
SQLiteOpenHelper是一个用于管理SQLite数据库的辅助类。它为我们提供了创建、打开和升级数据库的功能。当我们需要在应用程序中创建和维护数据库时,一般会创建一个继承自SQLiteOpenHelper的自定义帮助类。
下面是一个示例的自定义SQLiteOpenHelper类的代码:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建数据库表
String createTableQuery = "CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT)";
db.execSQL(createTableQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级数据库
String upgradeQuery = "ALTER TABLE mytable ADD COLUMN email TEXT";
db.execSQL(upgradeQuery);
}
}
在上面的示例中,我们创建了一个名为MyDatabaseHelper的自定义帮助类。它继承自SQLiteOpenHelper,并在其构造函数中指定了数据库的名称和版本号。
onCreate()方法
当我们首次访问数据库时,SQLiteOpenHelper的onCreate()方法将被调用。此方法在数据库被创建的时候执行一次。在onCreate()方法中,我们通常会执行一些数据库的初始化操作,如创建表格、插入初始数据等。
在上面的示例中,我们在onCreate()方法中执行了创建名为”mytable”的表格的操作。我们使用了SQL语句”CREATE TABLE”来定义表的结构,其中包含了”id”和”name”两个列。
当我们第一次实例化并获取数据库实例时,如果数据库不存在,SQLiteOpenHelper会检测到它,并自动调用onCreate()方法来创建数据库。
onUpgrade()方法
在应用程序需要升级数据库结构时,SQLiteOpenHelper的onUpgrade()方法将被调用。此方法在应用程序版本号升级时被触发。我们可以在onUpgrade()方法中执行一些数据库结构的变更操作,如添加新的列、删除旧的列等。
在上面的示例中,我们在onUpgrade()方法中执行了一个ALTER TABLE语句,向”mytable”表格中添加了一个名为”email”的列。
我们可以通过更改MyDatabaseHelper类的DATABASE_VERSION常量的值来触发onUpgrade()方法的调用。当我们将常量的值增加时,onUpgrade()方法将会被调用。
总结
SQLiteOpenHelper类是Android开发中用于管理SQLite数据库的重要类。它提供了onCreate()和onUpgrade()方法,用于在数据库创建和升级时执行相应的操作。onCreate()方法在数据库首次创建时被调用,用于执行数据库的初始化操作;而onUpgrade()方法在升级数据库结构时被调用,用于执行数据库的升级操作。通过使用继承自SQLiteOpenHelper的自定义帮助类,我们可以方便地管理和操作应用程序的SQLite数据库。