Android Sqlite数据库onCreate参数

Android Sqlite数据库onCreate参数,android,sqlite,oncreate,Android,Sqlite,Oncreate,我是SQLite数据库制作的初学者,刚刚遇到一个问题。我希望能够完全重新创建我的表,所以我复制了onCreate并使用完全相同的参数将其重命名为reCreate。我想问的是,传递到onCreate中的SQLiteDatabase是否必须是某个SQLite数据库,因为似乎reCreate不起作用(在后面的函数中,使用reCreate后会说“没有这样的表”) 调用以下命令的代码: SQLiteDatabase db = null; new EventDBHelper (this, 1).reCrea

我是SQLite数据库制作的初学者,刚刚遇到一个问题。我希望能够完全重新创建我的表,所以我复制了onCreate并使用完全相同的参数将其重命名为reCreate。我想问的是,传递到onCreate中的SQLiteDatabase是否必须是某个SQLite数据库,因为似乎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));
}

我没有找到这方面的文档。

好吧,您正在将
null
作为参数传递给
reCreate()
,因此很明显,对其调用方法是行不通的

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


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

那么您的意思是您没有
onCreate()
方法吗?不,我有。这和重新创建是一样的,问题是我需要一个按钮来移除表格。我只需要重新创建一张桌子。如果我输入'neweventdbhelper(this,1).getWritableDatabase()'而不是'null',告诉我表不存在,它仍然不起作用。我做错了什么?如果我不删除表(在开始活动时不按下按钮),它工作得非常好。这和我的问题有关系吗?PS:按“清除数据”键也可以删除数据库吗?若不创建该表,则该表不存在。空的
onCreate()
不会创建任何内容。对于删除数据,有
delete()。内容提供商是可以放在数据库顶部的东西,但无助于解决问题。清除数据与卸载技巧一样有效。