сохранение и извлечение счетчика в SQLiteDatabase и использование его для сохранения уникального имени файла - PullRequest
1 голос
/ 06 октября 2011

Я относительно новичок в Java и хочу использовать счетчик для сохранения каждого изображения, снятого с уникальным идентификатором.Сохраняя переменную counter в SQLite, я хочу получить ее снова, когда перезапускаю приложение с тем же значением, что и при завершении работы.Проблема в том, что счетчик пропускает числа (сохраняя имя файла как 0, 1, 3, 5 и т. Д.).И он перезапускается с 0 при выходе и повторном запуске приложения.

OnCreate, писать и читать в MosidaDb.java

@Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                KEY_PHOTOID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_PHOTOPATH + " TEXT NOT NULL, " +
                KEY_LOCATION + " TEXT, " +
                KEY_AUDIOPATH + " TEXT, " +
                KEY_DESCRIPTION + " TEXT);");

        db.execSQL("CREATE TABLE " + DATABASE_TABLE2 + " (" +
                KEY_PHOTONAME + " INTEGER NOT NULL, " +
                KEY_AUDIONAME + " INTEGER NOT NULL);");

    }


public long dbEntry2(int photoname) {
    ContentValues cv2 = new ContentValues();
    cv2.put(KEY_PHOTONAME, photoname);
    return myDatabase.insert(DATABASE_TABLE2, null, cv2);
}

public int getPhotoid() {

    Cursor c = myDatabase.rawQuery("SELECT * FROM NameTable", null);

    int iQuery = c.getColumnIndex(KEY_PHOTONAME);
    int result = 0;

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
        result = result + c.getInt(iQuery);
} 
    return result;

} 

Видите ли вы что-то не так в этих методах?Переменная счетчика передается в dbEntry2 и извлекается методом getPhotoid ().Или, по крайней мере, это то, чего я хочу.спасибо

1 Ответ

0 голосов
/ 06 октября 2011

Если в начале:

database.beginTransaction();

тогда вы должны позвонить до выхода из приложения:

myDatabase.setTransactionSuccessful();
myDatabase.endTransaction();

Это должно зафиксировать ваши изменения.

А также вы всегда должны закрывать курсор, когда закончите:

c.close();

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

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