2

这是我第一次使用 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

}

}

4

1 回答 1

14

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

要查看调用了“onCreate”,请手动删除 db 文件,或直接卸载应用程序。

于 2011-08-23T16:43:36.320 回答