База данных Sqlite при создании параметра

Я новичок в создании баз данных SQLite, и я только что столкнулся с проблемой. Я хочу иметь возможность полностью воссоздать свою таблицу, поэтому я скопировал в OnCreate и переименовал его в ReCreate с точно такими же параметрами. Я хочу спросить, должна ли база данных SQLite, которая передается в onCreate, быть определенной базой данных 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 ответ

Ну, вы проходите null в качестве аргумента к вашему reCreate() так очевидно, что вызов методов на этом не сработает.

SQLiteDatabase ссылка, которая передается onCreate(), onUpgrade() и т. д. то же самое, что в конечном итоге будет возвращено, например, getWritableDatabase(), Так что если вы хотите запустить пользовательский SQL в вашей базе данных, запустите его с возвращаемым значением getWritableDatabase(),

Если вы хотите воссоздать базу данных, просто удалите приложение, чтобы удалить старый файл базы данных. Когда вы переустанавливаете и запускаете его, первый вызов, например, getWritableDatabase() призовет ваш onCreate() и вы должны создать таблицы там.

Другие вопросы по тегам