android - Sqlite 数据库 onCreate 参数

标签 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));
}

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

最佳答案

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

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

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

关于android - Sqlite 数据库 onCreate 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22818418/

相关文章:

iphone - 如何保持 SQLite 数据库和 UITableView 同步

Python SQLite3函数不打印任何数据

android - ProgressDialog onCreate

android - 在 PC 上测试 Android NDK 可执行文件,无需任何 JNI 或上层

安卓 slider 拼图

android - 如何从线程表中的 recepient_ids 中获取联系方式

一旦我尝试启动 Activity,Android 应用程序就会崩溃并显示 "Unfortunately, <appname> has stopped"

java - 如何在Android的onCreate方法中使用全局变量

android - Scala 内部类 - 不是成员(member)

android - 如何使用 onItemClickListener 从 ListView 存储可点击项目?