Cursor allDetail = allDatabase2.rawQuery("Select "+ TaskDatabaseManager.KEY_ROWID + ","+ TaskDatabaseManager.TASK_TIMES + ","+ TaskDatabaseManager.TASK_DESCRIPTION + " from "+ TaskDatabaseManager.DATABASE_TABLE + " where "+ TaskDatabaseManager.TASK_DATE + "= '" + LaunchActivity.selectedDate + "'", null);
我无法正确比较数据库中的两个日期。有关如何比较它们的任何帮助。我的Android数据库架构是
static final String CREATE_QUERY = "CREATE TABLE " + DATABASE_TABLE + "("+KEY_ROWID+" INTEGER PRIMARY KEY AUTOINCREMENT ,"
+ TASK_DESCRIPTION + " VARCHAR(200) NULL,"+TASK_DATE+ " DATE Null, "+ TASK_TIMES
+ " VARCHAR(30) NULL," + TASK_STATUS + " BOOLEAN DEFAULT FALSE);";
答案 0 :(得分:1)
我在Google论坛上发现了这个:
SQLite将日期视为字符串。如果您不存储日期/时间
使用ISO-8601格式(YYYY-MM-DD HH:MM:SS),你无法比较它们,
因为仅在ISO-8601格式中,词汇比较按预期工作。
答案 1 :(得分:0)
您应该测试Cursor
是否包含任何数据以确定是否为空。在您的情况下,您的表可能不包含行。
if (cursor != null && cursor.moveToFirst()) {
// is not empty
}
else {
// is null (problem with SQLiteDatabase) or empty
}
所以现在你知道问题出在哪里了。如果Cursor为空,则可以使用数据库(不包含任何行)或使用 LaunchActivity.selectedDate 变量添加到where子句。
CREATE_QUERY
分号中移除 ;
此符号
只创造问题String query = "select * from table where _id = ?";
Cursor c = db.rawQuery(query, new String[] {String.valueOf(id)});
if (c != null && c.moveToFirst()) {
do {
// fetch data from Cursor
} while (c.moveToNext());
}
else {
// Cursor is null or empty
}