SQLiteOpenHelper没有调用onCreate

时间:2011-08-23 16:25:00

标签: android sqlite 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

}

}

1 个答案:

答案 0 :(得分:13)

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

中完成

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