Я получил этот класс, который создает базу данных при первом запуске приложения. Я хотел заполнить одну таблицу некоторыми примерами значений из strings.xml. В основном я бы сделал это так:
private static final String CATEGORIES_FILL = "INSERT INTO categories VALUES ('', " + getString(R.string.fuel) + "); " +
"INSERT INTO categories VALUES ('', " + getString(R.string.food) + "); " +
"INSERT INTO categories VALUES ('', " + getString(R.string.treatment) + "); " +
"INSERT INTO categories VALUES ('', " + getString(R.string.salary) + "); ";
Проблема в том, что класс не является действием, и строка должна быть статической, чтобы я мог использовать
db.execSQL(CATEGORIES_FILL);
Пожалуйста, исправьте мой подход, чтобы я мог использовать strings.xml для этого.
Я предполагаю, что мог бы сделать это в своем классе активности, окружив его блоком try, но мне не нравится идея выполнять это каждый раз, когда я открываю упражнение.
Фрагмент базы данных класса
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
final String CATEGORIES_FILL = "INSERT INTO categories VALUES ('', " + context.getString(R.string.fuel) + "); " +
"INSERT INTO categories VALUES ('', " + context.getString(R.string.food) + "); " +
"INSERT INTO categories VALUES ('', " + context.getString(R.string.treatment) + "); " +
"INSERT INTO categories VALUES ('', " + context.getString(R.string.salary) + "); ";
}
/* Tworzenie tabel
* @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
db.execSQL(CATEGORIES_FILL); //need the way to access this final here
db.execSQL(EXPENSES_CREATE);
db.execSQL(INCOMES_CREATE);
db.execSQL(BUGS_CREATE);
}