Чтение и запись таблицы в текстовый файл - PullRequest
1 голос
/ 29 ноября 2011

Я работаю над системой достижений для Android и просто ищу простой способ хранения всех достижений и вашего прогресса для каждого.Мне нужно хранить: идентификатор, заголовок, описание, точки, текущее значение, максимальное значение и путь к изображению для КАЖДОГО достижения.

Я пытался использовать службы SQLite и все, но я не могу этого получитьработает хорошо, поэтому я просто хочу использовать некоторые основные текстовые таблицы на данный момент.Я знаю, что вы используете FileBuffer, и я знаю, как записывать в текстовые файлы, но я просто не уверен, что лучше всего их форматировать и как их читать.

Я думал о форматировании таблицы примерно так:this:

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

Это дало бы мне доступ к каждому достижению в виде его собственной подтаблицы или чего-то в этом роде, и я мог бы построить объект достижений вокруг значений, которые я получаю для дальнейшего использования.

1 Ответ

0 голосов
/ 29 ноября 2011

вы можете начать создавать базу данных, как показано ниже.

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;
    }
}

Помните, что все эти три метода должны быть в одном классе.

если вам удастся справиться с созданием базы данных, а ваша таблица (вызывая эти методы в начальном упражнении), вставка данных будет легкой задачей,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...