SQLiteOpenHelper没有调用onCreate

Jon*_*lls 2 sqlite android oncreate sqliteopenhelper

这是我第一次使用SQLiteOpenHelper(或android上的数据库).当我得到一个可写的数据库时,我想知道为什么onCreate没有被调用在每个新类的实例上.难道我做错了什么?

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "MyDatabase.db";
    private static final int DATABASE_VERSION = 1;
    private String PrSQLcmd = "";


public DatabaseHelper(Context context)
{
    super(context, DATABASE_NAME, null, DATABASE_VERSION);  
}


@Override
public void onCreate(SQLiteDatabase db) 
{
    db.execSQL("CREATE TABLE IF NOT EXISTS Contact(Firstname TEXT, LastName TEXT");
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}
Run Code Online (Sandbox Code Playgroud)

}

Abh*_*nda 13

在SQLiteOpenHelper中,'onCreate'的含义与Activity中的含义不同.这里,'onCreate'只被调用一次,这是您第一次创建数据库.下次运行应用程序时,数据库已经存在,因此不会调用'onCreate'.您的对象级初始化应该在构造函数中完成,而不是在'onCreate'中

要查看被调用的'onCreate',请手动删除db文件,或者只是卸载应用程序.

  • 调用getWritableDatabase()/ readableDatabase()时将创建数据库,该数据库将打开现有数据库或创建新数据库(如果不存在).因此,onCreate只会在缓存数据库后调用一次,并根据读取或写入请求提供. (2认同)