2

我得到这段代码在我的数据库上启动查询:

public List<Photo> getPhotos(Calendar from, Calendar to) {
    // Check if the Connection to the DB is open
    raiseConnectionExceptionIfNotConnected();

    ArrayList<Photo> photos = new ArrayList<Photo>();
    // Query the database
    Cursor cur = db.rawQuery(
        "SELECT " + Day_TABLE + "." + DAY_PHOTO +
        " FROM " + Day_TABLE +
        " WHERE " + Day_TABLE + "." + DAY_DATE + " BETWEEN =? AND =? " +
            " AND " + Day_TABLE + "." + DAY_PHOTO + " IS NOT NULL " +
        " ORDER BY " + Day_TABLE + "." + DAY_DATE + " DESC",
        new String[] {date_format.format(from.getTime()),
                      date_format.format(to.getTime()) }
    );

    if (cur.moveToFirst()) {
        do {
            photos.add(new Photo(cur.getString(0)));
        }
        while (cur.moveToNext());
    }

    cur.close();
    return photos;
}

但是每次我的活动调用它时,我都会收到此错误:

06-30 17:09:46.488: E/AndroidRuntime(273): 致命异常: main 06-30 17:09:46.488: E/AndroidRuntime(273): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com. github.groupENIGMA.journalEgocentrique/com.github.groupENIGMA.journalEgocentrique.GalleryActivity}:android.database.sqlite.SQLiteException:接近“=”:语法错误:,编译时:SELECT day.photo FROM day WHERE(day.date BETWEEN = ? AND =? ) ( AND day.photo IS NOT NULL ) ORDER BY day.date DESC

我不明白问题可能是什么。查询对我来说似乎没问题...

4

2 回答 2

3

使用时不应使用=运算符BETWEEN

正确的语法是

BETWEEN ? AND ? 
于 2013-06-30T15:27:07.417 回答
1

错误是 BETWEEN 语句中的“=”。

你应该在 log cat 中注意到它

“=”附近:语法错误:

于 2013-07-02T09:16:52.183 回答