保存并检索SQLiteDatabase中的计数器并使用它来保存唯一的文件名

时间:2011-10-06 15:58:14

标签: java android sqlite

我对Java比较陌生,并希望使用计数器来保存使用唯一ID拍摄的每张图像。通过将计数器变量保存到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 :(得分:0)

如果在开始时:

database.beginTransaction();

然后你必须在应用程序退出之前调用它:

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

那应该提交您的更改。

当你完成后,你也应该总是关闭光标:

c.close();

我不知道为什么反击会跳过,检查你的数据库内容。