我得到這個類,它在應用程序的第一次運行時創建數據庫。我想用strings.xml中的一些示例值填充一個表。基本上,我會做到這一點,如:使用strings.xml中的字符串在SQLite數據庫中創建示例值
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);
}
上使用id,但如果類不擴展Activity,我無法使用getResources?並且(?)地方的輸入是什麼 – 2011-12-20 16:24:10
任何上下文都可以讓你獲得資源。 ?是將值綁定到預編譯的SQLite語句時使用的佔位符。由於你無法訪問上下文,因此你在哪裏做這件事。 – Jens 2011-12-21 07:24:21
在databaseadapter類中創建數據庫,表和東西 – 2011-12-21 13:42:57