我对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()检索。或者这至少是我想要它做的事情。感谢
答案 0 :(得分:0)
如果在开始时:
database.beginTransaction();
然后你必须在应用程序退出之前调用它:
myDatabase.setTransactionSuccessful();
myDatabase.endTransaction();
那应该提交您的更改。
当你完成后,你也应该总是关闭光标:
c.close();
我不知道为什么反击会跳过,检查你的数据库内容。