2011-11-29 59 views
1

我正在爲Android的成就係統工作,我只是尋找一種簡單的方法來存儲所有的成就和你的進步。 我需要存儲:每個成就的標識,標題,描述,點數,當前值,最大值和圖像路徑。讀取和寫入表格到文本文件

我試過使用SQLite服務和一切,但我似乎無法得到那樣的工作,所以我現在只想使用一些基本的文本表。我知道你使用FileBuffer,我知道如何寫入文本文件,我只是不確定最佳的方式來格式化它們以及如何讀取它們。

我正在考慮格式化表格,如下所示:

{ 
    { 
     id = 0, 
     Title = "Sample Achievement", 
     Desc = "Sample description", 
     Points = 5, 
     CurVal = 3, 
     MaxVal = 10, 
     Img = "path/to/img.jpg", 
    } 
    { 
     id = 1; 
     ... 

這將使我訪問每個成就作爲自己的子表,或類似的東西,我可以建立一個圍繞我回去供以後使用的值的成就對象。

回答

0

你可以像下面一樣開始創建一個數據庫。

private static String db_path = "/data/data/com.yourproject/databases/mysqlitedb"; 
private SQLiteDatabase sqliteDatabase = null; 

public SQLiteDatabase getSQLiteDatabase() { 
    try { 

     sqliteDatabase = SQLiteDatabase.openDatabase(db_path, null, 
       SQLiteDatabase.OPEN_READWRITE); 
     sqliteDatabase.setVersion(1); 
     sqliteDatabase.setLocale(Locale.getDefault()); 
     sqliteDatabase.setLockingEnabled(true); 

     return sqliteDatabase; 
    } catch (Exception e) { 
     e.getMessage(); 
     return null; 
    } 

} 

之後,你可以像下面創建你的表。

public void createTable() { 
    try { 

     if (sqliteDatabase != null) { 
      sqliteDatabase.execSQL("CREATE TABLE IF NOT EXISTS " 
        + "Achievement" + " (_id INTEGER PRIMARY KEY, Title TEXT, Desc TEXT," 
        + " Points NUMERIC," + " CurVal NUMERIC, MaxVal NUMERIC, " 
        + " Img TEXT);"); 


     } 
    } catch (Exception e) { 
     e.getMessage(); 
    } 

} 

你可以像下面那樣插入數據到你的表中。

public int insert(String table, Hashtable<String, String> FieldsAndValues) { 
    // TODO Auto-generated method stub 
    int count=1; 
    try { 
     if (sqliteDatabase == null) { 
      sqliteDatabase = getSQLiteDatabase(); 
     } 

     Enumeration e = FieldsAndValues.elements(); 
     ContentValues initialValues = new ContentValues(); 
     for (e = FieldsAndValues.keys(); e.hasMoreElements();) { 
      String key = (String) e.nextElement(); 
      String value = (String) FieldsAndValues.get(key); 

      initialValues.put(key, value); 

     } 

     sqliteDatabase.insert(table, null, initialValues); 

     return count; 

    } catch (Exception e) { 
     e.getMessage(); 
     return -1; 
    } 
} 

請記住,所有這三種方法應該在一個類別下。

如果你能夠管理最新的創建數據庫和你的表(通過在你的初始活動中調用這些方法)插入數據將是一個小菜一碟,會幫助你。