gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:38:46 25 4
gpt4 key购买 nike

我对 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() 检索。或者这至少是我想要它做的。谢谢

最佳答案

如果在开头:

database.beginTransaction();

那么你必须在应用程序退出之前调用它:

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

这应该提交您的更改。

完成后,您还应该始终关闭光标:

c.close();

我不知道为什么计数器会跳过,请检查您的数据库内容。

关于java - 在 SQLiteDatabase 中保存和检索计数器并使用它来保存唯一的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7677073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com