У меня этот класс, который создает базу данных при первом запуске приложения. Я хотел заполнить одну таблицу некоторыми примерами значений из strings.xml. В основном я хотел бы сделать это как:Создание значений примера в базе данных SQLite с использованием строк из 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);
}
, но я не могу использовать getResources, если класс не расширяет действие справа? И какой вклад в (?) Месте –
Любой контекст сможет получить вам ресурсы. ? является заполнителем, используемым при привязке значений к предварительно скомпилированной инструкции SQLite. Где вы делаете это, так как у вас нет доступа к контексту. – Jens
делать это в классе databaseadapter, где создаются базы данных, таблицы и прочее –