读写表文本文件

时间:2011-11-29 00:59:37

标签: android file

我正在研究Android的成就系统,我只想找到一种简单的方法来存储所有成就和每个成就。 我需要存储:ID,标题,描述,点数,当前值,最大值和每个成就的图像路径。

我尝试使用SQLite服务和所有东西,但我似乎无法正常工作,所以我只想暂时使用一些基本的文本表。我知道你使用FileBuffer,我知道如何写入文本文件,我只是不确定格式化它们的最佳方法以及如何阅读它们。

我正在考虑将表格格式化为:

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

这样我就可以将每个成就作为自己的子表格访问,或类似的东西,我可以围绕我后来使用的值构建一个Achievement对象。

1 个答案:

答案 0 :(得分: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;
    }
}

请记住,所有这三种方法都应该属于一个类。

如果你能够管理创建数据库和你的表(通过在初始活动中调用这些方法),插入数据将是小菜一碟,会对你有帮助。