2011-10-06 70 views
1

我對Java相對較新,並且希望使用計數器來保存每個使用唯一ID拍攝的圖像。通過將計數器變量保存爲SQLite,我想在重新啓動應用程序時使用與關閉時相同的值來重新檢索它。現在的問題是計數器跳過數字(將文件名保存爲0,1,3,5等)。當我退出並重新啓動應用程序時,它將從0重新開始。保存並檢索SQLiteDatabase中的計數器並使用它來保存唯一的文件名

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()檢索。或者這至少是我想要它做的。感謝

+0

獲取的文件名不是0,1,3,6,10 ......? – Caner

+0

1,3,5,7,9現在。所以它似乎計數器運行兩次。但最大的問題是,當我重新啓動應用程序時,計數器會重置。 – user982476

回答

0

如果在開始時:

database.beginTransaction(); 

則必須在應用程序退出之前調用此:

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

這應該提交更改。

,你也應該總是關閉你的光標,當您完成:

c.close(); 

我不知道爲什麼跳過櫃檯,檢查數據庫的內容。

+0

非常感謝!由於我錯放了它,櫃檯被跳過了。明白了吧 – user982476

相關問題