java - 无法弄清楚为什么 SQL 语句不起作用

标签 java android sql sqlite

我不明白我的说法有什么问题。对我来说似乎是正确的,光标应该包括我的数据库表中的两行。根据 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));

这就是表格的样子。 This is what my table looks like

日志:

...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/

相关文章:

java - 当同时调用完整的activiti任务时,完整任务的TaskListener运行多次

android - Android 上统一原生广告中的 IncompatibleClassChangeError

php - SQL View 中的唯一列

sql - 在 MySQL 中, ' results in error, ` 工作正常。为什么?

java - 从输入流 Java 读取多个 XML 文件

java - (Hadoop) : reduce method is not getting executed/called while running mapreduce job

java - Netbeans Java 控制台编码 UTF-8 和变音符号

android - 如何在运行时在自定义 View 中画线?

android - CakePHP 2.0 和移动应用程序身份验证

mysql - 我不明白这个 SQL 查询是如何工作的以及 := operator