鑑於我沒有發現任何支持Android的東西,實際上工作,並不需要我訂閱瘋狂的數據庫世界視圖,並沒有花費很多(愛好項目,沒有骰子),我來了與以下bodgy黑客。這並不聰明,但它至少允許我以我熟悉的方式思考我的模式。我不認爲它對於大型代碼庫/數據庫模式來說工作得很好,但如果你知道,你可能負擔得起某些東西。
public class AppDatabase extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "main";
public static final int LATEST_VERSION = 4;
public static SQLiteDatabase open(Context ctx) {
AppDatabase db = new AppDatabase(ctx);
return db.getWritableDatabase();
}
public AppDatabase(Context ctx) {
super(ctx, DATABASE_NAME, null, LATEST_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
onUpgrade(db, 0, LATEST_VERSION);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
for (int i = oldVersion+1; i <= newVersion; i++) {
switch (i) {
case 1:
db.execSQL("CREATE TABLE blah (" +
"id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
"start CHAR(4)," +
"end CHAR(4)" +
")");
break;
case 2:
db.execSQL("CREATE TABLE fortnights (" +
"first_day DATE PRIMARY KEY" +
")");
break;
case 3:
db.execSQL("ALTER TABLE shifts ADD top CHAR(4)");
db.execSQL("ALTER TABLE shifts ADD bottom CHAR(4)");
db.execSQL("UPDATE shifts set top=start, bottom=end");
break;
case 4:
db.execSQL("ALTER TABLE shifts ADD callout BOOLEAN DEFAULT 0");
break;
}
}
}
}
嘿Womble,非常好的問題。我一直不滿意android提供的數據庫API。來自rails的背景我想實現rails類似的模型。你有沒有實現一些東西? Thx提前。 – Denis 2011-03-23 12:11:14
@Denis:我已經把最終的解決方案作爲答案。希望能幫助到你。 – womble 2011-06-28 05:04:32