0
Мне нужно только выбрать операцию. Поэтому данные должны быть вставлены перед запуском приложения. Каков наилучший способ сделать это?База данных Android Локализовать данные перед запуском приложения
Мне нужно только выбрать операцию. Поэтому данные должны быть вставлены перед запуском приложения. Каков наилучший способ сделать это?База данных Android Локализовать данные перед запуском приложения
Используйте подкласс SQLiteOpenHelper, чтобы получить доступ к вашему db. onCreate
будет вызываться один раз, когда база данных будет создана.
Чтобы использовать БД, то вы можете сделать:
DBHelper db = new DBHelper(context);
db.getReadableDatabase().query(....);
db.close();
Продлить SQLiteOpenHelper
сделать что-то вроде (SQL, для создания таблицы не проверяется!):
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "database.db";
private static final Integer DATABASE_VERSION = 1;
DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/*
* Called ONCE on the very first db access (when the db file is created)
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE mytable (_id PRIMARY KEY AUTOINCREMENT, value TEXT); \n" +
"INSERT INTO mytable (value) VALUES ('data'));");
}
/*
* Called every time you open a database
*/
@Override
public void onOpen(SQLiteDatabase db) {
}
/*
* Called ONCE if DATABASE_VERSION has changed since the last instantiation of DBHelper
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Спасибо за ваш ответ, но у меня больше вопросов. Я использую класс, подобный вашему DBHelper, и в другом классе, который я назвал DBAdapter. Я создаю экземпляр DBHelper, как и вы. Тем не менее, это называется для каждого запуска приложения. Я хочу создать таблицы и вставить данные один раз. Как я могу это решить? Редактировать: В методе onUpgrade я бросаю все таблицы и снова вызываю CreateCreate. Это проблема? – adaclks
Вполне нормально отказаться от всего и воссоздать с нуля. И если вы хотите сделать это, вызывая onCreate изнутри onUpgrade, это тоже нормально. – thaussma
Спасибо, но как я могу избежать операций вставки для каждого запуска приложения? Я создаю экземпляр DBHelper в моем DBAdapter и в моей MainActivity, я создаю экземпляр DBAdapter. – adaclks