【问题标题】:Error in sqlite query, androidsqlite查询错误,android
【发布时间】:2013-06-30 15:23:00
【问题描述】:

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

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: near "=": syntax error: , while compile: SELECT day.photo FROM day WHERE ( day.date BETWEEN =? AND =? ) ( AND day.photo IS NOT NULL ) ORDER BY day.date DESC

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

【问题讨论】:

    标签: android sqlite runtime-error


    【解决方案1】:

    在使用BETWEEN 时,不应使用= 运算符。

    正确的语法是

    BETWEEN ? AND ? 
    

    【讨论】:

    • 当然,我在发布问题时得到了它:)......“=”来自错误的剪切和粘贴,我没有注意到它们
    • 总是这样 :)
    • 如果发布时出现 =,那么它们在错误日志中的显示方式:s
    【解决方案2】:

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

    你应该在日志猫中注意到它

    “=”附近:语法错误:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2016-01-21
      相关资源
      最近更新 更多