Sqlite数据库onCreate参数

时间:2014-04-02 17:11:06

标签: android sqlite oncreate

我是SQLite数据库制作的初学者,我遇到了一个问题。我希望能够完全重新创建我的表,所以我复制onCreate并使用完全相同的参数重命名为reCreate。我想问的是传递给onCreate的SQLiteDatabase必须是某个SQLite数据库,因为似乎reCreate不起作用(在以后的函数中,在使用reCreate之后它说“没有这样的表”)。

调用reCreate的代码:

SQLiteDatabase db = null;
new EventDBHelper (this, 1).reCreate(db);

重新创建代码:

//String used to create new player data table
private final String createDB = "CREATE TABLE IF NOT EXISTS " + DB_NAME + " ( "
        + I_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
        + NAME + " TEXT, "
        + TEXT + " TEXT, "
        + PIC_S + " TEXT, "
        + PIC_E + " TEXT, "
        + POINTS + " TEXT, "
        + PROB + " TEXT "
        + " ) ; ";
//String to delete table
    private final String deleteDB = "DROP TABLE IF EXISTS " + DB_NAME;

public void reCreate(SQLiteDatabase db){
//remove
db.execSQL(deleteDB);

//create
db.execSQL(createDB);

//initialize the database
db.insert(DB_NAME, null, insertValuesFromEvent (find_bill));
db.insert(DB_NAME, null, insertValuesFromEvent (find_bill2));
db.insert(DB_NAME, null, insertValuesFromEvent (salary));
}

我没有找到相关的文档。

1 个答案:

答案 0 :(得分:1)

好吧,你将null作为参数传递给你的reCreate(),所以显然调用方法就行不通了。

传递给SQLiteDatabaseonCreate()等的onUpgrade()引用与最终将被返回的引用相同。 getWritableDatabase()。因此,如果要在数据库上运行自定义SQL,请在返回值getWritableDatabase()上运行它。

如果要重新创建数据库,只需卸载应用程序,以便删除旧的数据库文件。当您重新安装并运行它时,第一次呼叫例如getWritableDatabase()将调用您的onCreate(),您应该在那里创建表格。