База данных 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()
и вы должны создать таблицы там.