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): 致命的な例外: メイン 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: near "=": 構文エラー: 、コンパイル中: 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 ステートメントの「=」です。

ログ猫で気付くはずです

「=」付近: 構文エラー:

于 2013-07-02T09:16:52.183 に答える