【问题标题】:SQLite statement working in database editor but not AndroidSQLite 语句在数据库编辑器中工作,但不适用于 Android
【发布时间】:2012-04-02 14:31:50
【问题描述】:

也许这是一个简单的问题,但我只是没有看到它:)

在我的数据库中,我有两个名为 NoRide 和 NoAttempt 的字段。

在一行中,我有 NoRide = 40 和 NoAttempt = 40。

当我使用以下方法直接在数据库中查询时没有问题:

SELECT * FROM MyTable WHERE NoRide = NoAttempt

但是在 Android 中,我将这一行包含在 rawQuery 语句中,但没有得到任何结果。同样,如果我做类似的事情

rawQuery("SELECT * FROM MyTable WHERE NoRide - NoAttempt != '0'", null);

当此查询在数据库查询中正常工作时,我也没有得到任何数据。

android 中的 rawQuery 有什么不同之处吗?

【问题讨论】:

  • 我认为当您尝试使用光标打印数据时会出错..
  • 究竟是怎么回事?我没有收到任何错误,只是没有值。
  • 您如何确定没有结果?
  • 如果我将等式更改为“SELECT * FROM MyTable WHERE NoRide = '40'”,我成功地将光标计数拉为 1。如果我替换 NoAttempt = '40',则相同,所以我知道两者都有正确的数据。

标签: android sqlite


【解决方案1】:

我不知道您问题的第一部分 (NoRide=NoAttempt) 发生了什么,但我对第二个问题有所了解。

尝试从 0 中删除单引号...数据库可能认为您正在尝试将 int 与字符串进行比较。就这样吧:

rawQuery("SELECT * FROM MyTable WHERE NoRide - NoAttempt != 0", null); 

【讨论】:

  • Bingo,实际上是这样做的,我用它来达到相同的结果。
【解决方案2】:

试试这个

rawQuery("SELECT NoRide, NoAttempt FROM MyTable 
WHERE IFNULL(NoRide,0) - IFNULL(NoAttempt,0) <> 0", NULL);

【讨论】:

  • 没有骰子...相同的结果(0 值)。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多