信息:
所以我想在安装应用程序时创建一个数据库,插入一些数据并且永远不要再次更改它们,只读取数据库。作为一个例子:想想在安装它时愤怒的小鸟中的等级,它们很可能从某个地方读取并在第一次安装时放入数据库,然后从那里读取。从未改变过(除非游戏更新)。
我以同样的方式对我的“愤怒的小鸟”游戏的级别进行了以下骨架代码:
public class GameDBHelper extends SQLiteOpenHelper{
private SQLiteDatabase database;
public static final String TAG = GameDBHelper.class.getSimpleName();
//Insert static database variables here
public GameDBHelper( Context ctx ) {
super(ctx,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE_STATEMENT);
insertAllGames(); //Method to read data from all game files and insert into database
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists " + TABLE_GAMES); //Should be "alter table"
Log.d(TAG, "onUpgrade dropped table " + TABLE_GAMES);
this.onCreate(db);
}
private void insertAllGames(){
//Method that reads all files and inserts into database
}
}
通常的做法是,我也有一个使用GameDBHelper的类的框架代码。这应该只有一个将在Activity中使用的查询方法:
public class GameDataSource {
private static final String TAG = GameDataSource.class.getSimpleName();
private SQLiteDatabase database;
private GameDBHelper gameDBHelper;
public GameDataSource(Context con, OTHER_DATA_AS_NEEDED) {
gameDBHelper = new GameDBHelper(con);
Log.d(TAG, "GameDataSource object created!");
}
public Cursor query(DATA_AS_NEEDED) throws SQLException{
database = gameDBHelper.getReadableDatabase();
return database.query(QUERY_STATEMENT);
}
}
问题:
提前致谢!
答案 0 :(得分:1)
将这种配置数据存储在静态数据库中很好 - 如果数据非常适合数据库,没有理由发明自己的文件格式(并编写解析器)。这里有一个很好的方法:
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
并在此详细讨论: