所有! 我的代码: 此方法需要检查当前日期,如果更改它将在db。中创建新记录。
public static void updateHintBase(SQLiteOpenHelper database)
{
String currentDate = getDateInString();
SQLiteDatabase db = database.getReadableDatabase();
Cursor cursor = db.query("HINTS",
new String[]{"CURRENT_DATE"},
"CURRENT_DATE = ?",
new String[]{currentDate},
null, null, null);
int countRow = cursor.getCount();
cursor.close();
if (countRow==0)
{
ContentValues values = new ContentValues();
values.put("CURRENT_DATE", currentDate);
values.put("SPENT", 0);
values.put("TOTAL", TOTAL_HINTS);
db.insert("HINTS", null, values);
}
db.close();
}
此方法将date转换为String:
private static String getDateInString()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
return date;
}
表格结构:
db.execSQL("CREATE TABLE HINTS (CURRENT_DATE TEXT PRIMARY KEY , "
+ "SPENT INTEGER,"
+ "TOTAL INTEGER);");
但我的代码不起作用。第一次它工作,但第二次更改日期时,我的第一个方法无论如何都在光标中找到元素......
例如:
1)今天16.01.2017。我的申请已经执行。一切都很好。
2)今天18.01.2017。我的应用程序已执行,我希望方法 cursor.getCount()将返回给我 0 ,并且将创建具有新日期的新行。但它返回给我 1。等。
答案 0 :(得分:0)
您可能必须将光标设置为cursor.MoveToNext()
在获取可能存在问题的信息之前,您还要关闭光标。最后,循环光标是获取更多信息的最有效方法。
答案 1 :(得分:0)
请尝试此查询:
cursor = db.rawQuery("select count(YOUR_ID) from HINTS where CURRENT_DATE = ? ", new String[] {currentDate});
答案 2 :(得分:0)
哦!我发现了自己的错误! Word“CURRENT_DATE”由SQL保留。 https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions037.htm#SQLRF00628 这就是我的代码工作不正确的原因。 我将“CURRENT_DATE”更改为“TODAY”,现在它可以正常工作。