我不明白我的说法有什么问题。对我来说似乎是正确的,光标应该包括我的数据库表中的两行。根据 SQLite 网站,支持这种格式的日期(也尝试过其他支持的日期)。
String statement = "SELECT * FROM " + TABLE_DISTANCE_NAME + " WHERE " + COLUMN_TIME_DISTANCE_ADDED + " BETWEEN " + "2014-07-14" + " AND " + "2014-08-14";
Log.d("statement", statement);
Cursor cur = db.rawQuery(statement, null);
Log.d("cursor amount rows", Integer.toString(cur.getCount()));
if (cur != null) {
cur.moveToFirst();
}
int totalDistance = 0;
while (cur.isAfterLast() == false) {
Log.d("cursor distance value", Integer.toString(cur.getInt(0)));
totalDistance += cur.getInt(0);
cur.moveToNext();
}
Log.d("Total Distance traveled = ", Integer.toString(totalDistance));
这就是表格的样子。
日志:
...statement﹕ SELECT * FROM distanceTraveled WHERE timedistadded BETWEEN 2014-07-14 AND 2014-08-14
com.example.RoadTrip D/cursor amount rows﹕ 0
com.example.RoadTrip D/Total Distance traveled =﹕ 0
谢谢
最佳答案
日期常量需要用单引号引起来:
" WHERE " + COLUMN_TIME_DISTANCE_ADDED + " BETWEEN " + "'2014-07-14'" + " AND " + "'2014-08-14'";
如果您在替换后打印出 SQL 语句,这个问题会更明显。这始终是尝试调试此类问题的良好第一步。
关于java - 无法弄清楚为什么 SQL 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254793/