【问题标题】:SQLite query returns nothingSQLite 查询不返回任何内容
【发布时间】:2011-10-31 01:52:19
【问题描述】:

我在 SQLite 中有这个查询,我想根据传递的日期返回一个值。日期在数据库中作为字符串。我知道数据库中有那个日期的数据,但它什么也没返回。我不知道为什么。当我在没有比较参数的情况下进行查询时,它会正常返回所有数据,但是在查询方法中使用 WHERE 子句,它会停止返回。也许这只是 SQL 语法的问题。无论如何,这是声明:

Cursor cursor = db.query(TABLE, new String[] {"_id", "value"}, "current_date = ? ", new String[] {date}, null, null, null);

编辑

我在 SQLite 数据库浏览器中进行了此查询,但它没有返回任何值。即使它在那里。

我已经看到这很有趣和困惑。我已经在数据库浏览器和手机上进行了测试,当我通过当天,“今天”时,它会获取数据,但是当我通过另一天不是今天时,它什么也不返回。非常非常奇怪。

在数据库浏览器中,我选择了包含日期的列,它只返回“今天”日期,即使在还有其他日期之前也是如此。

【问题讨论】:

  • new String[] {"_id, value"} - 你可能想要new String[] {"_id", "value"}。如果这不能解决问题,请发布 date 的确切值以及数据库中的内容。
  • 两种格式(传入和数据库中)都是这种格式 yyyy-mm-dd。我修复了这个问题,但没有解决。

标签: android sqlite


【解决方案1】:

如果您的日期以“dd-mm-yyyy”格式存储在数据库中,请尝试使用它-

Calendar cal=Calendar.getInstance();
Cursor cursor = db.query(TABLE, new String[] {"_id", "value"}, "date = ? ", String.format("%1$td-%1$tm-%1$tY",cal), null, null, null);

其他格式请参考http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html

【讨论】:

    【解决方案2】:

    列名是“current_date”,这是一个 SQLite 函数名。所以它没有得到其他日期,只有当前日期。

    【讨论】:

    • 那么你要么在你的应用程序中写了一个错误的查询,要么只是一个错字。在你的问题中,它是 Cursor cursor = db.query(TABLE, new String[] {"_id", "value"}, "date = ?", new String[] {date}, null, null, null);
    猜你喜欢
    • 2012-04-14
    • 1970-01-01
    • 2021-04-24
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多