我有一種方法可以檢查成果,並試圖使其正常工作。它需要一個字符串並將其轉換爲一個長,然後檢查針對所述數據庫中的字符串值(將其轉化爲長)方法始終返回true
這裏是代碼:
public boolean checkAchievements(String timeString) {
long timeInt = Long.parseLong(timeString);
boolean newAchievement = false;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT millis FROM records ORDER BY CAST(millis as SIGNED) DESC", null);
cursor.moveToFirst();
long topTime = Long.parseLong(cursor.getString(0));
cursor.close();
if (timeInt > topTime) {
db.rawQuery("update achievements set completed='yes' where name='Beat top record'", null);
newAchievement = true;
}
db.close();
return newAchievement;
}
IHE timeString
是當前時間在毫秒從日曆中獲取並從長轉換爲字符串。我不知道爲什麼這個函數保持返回true,特別是當我知道timeInt不大於topTime時。
此外,即使此函數返回true
,該更新查詢甚至沒有運行,因爲我檢查了數據庫,並且完成的值仍然是「否」,其中名稱=「擊敗頂部記錄」。
當你說你「知道一個事實,即timeInt比topTime不大於」是因爲你檢查調試器中的值?在題外話題上:你可能會考慮在你的SELECT查詢中加入「LIMIT 1」。 –
好了,我的UPDATE查詢也不起作用,即使函數返回true。 – scarhand
您確定設備/模擬器正在運行您認爲它的代碼嗎? –