2013-05-08 69 views
0

我有一个SQL查询不返回任何值,但它有数据要返回。下面的查询代码Sqlite查询返回没有值Android

Cursor cursor = db.query(CrimeDB.NOME_TABELA, CrimeDB.COLUNAS, 
      CrimeDB.ID_CIDADE + "=" + idCidade + "" + " AND " 
        + CrimeDB.TIME + " >= datetime('" + dataInicioFormatada 
        + "') AND " + CrimeDB.TIME + " <= datetime('" 
        + dataFimFormatada + "')" + " AND " 
        + CrimeDB.GRUPO_CRIME + "=" + idCategoria + "", null, 
      null, null, null); 

读光标

if (cursor.moveToFirst()) { 

     do { 
      crime = new Crime(); 
      crime.setLastUpadateToken(ultimoTokenValido 
        .getUltimoTokenAtualizado()); 

      listCrime.add(itemCrime); 

     } while (cursor.moveToNext()); 

    } 

查询结果是:

SELECT  
     grupo_crime_id_grupo_crime, 
    id_crime, 
    cities_id_cities, 
    time 
FROM 
    crime 
WHERE 
    cities_id_cities=1650 AND 
    time >= datetime('20-10-2012') AND 
    time <= datetime('22-05-2014') AND 
    grupo_crime_id_grupo_crime=1 

是返回到实现任何价值,因为在数据库中的价值。使用SQLite编辑器,我可以看到任何有关表罪行的注册。

id_crime | cities_id_cities | grupo_crime_id_grupo_crime | time 
1   1650    1       28-03-2013 
2   1650    1       06-04-2013 
+0

是你的'idCidade'整数值吗? – 2013-05-08 16:59:53

+0

是的,我喜欢。 idCidade是整数值。 – 2013-05-08 17:03:27

回答

1

将日期格式更改为yyyy/MM/dd并尝试使用between,而不是将日期与>=<=进行比较。

0

使用单引号('),而在where子句

Cursor cursor = db.query(CrimeDB.NOME_TABELA, CrimeDB.COLUNAS, 
      CrimeDB.ID_CIDADE + "='" + idCidade + "'" + " AND " 
        + CrimeDB.TIME + " >= datetime('" + dataInicioFormatada 
        + "') AND " + CrimeDB.TIME + " <= datetime('" 
        + dataFimFormatada + "')" + " AND " 
        + CrimeDB.GRUPO_CRIME + "='" + idCategoria + "'", null, 
      null, null, null); 
+0

测试过这种方式,并没有区别:( – 2013-05-08 16:44:18

0

正确的日期格式,无论是在数据库和您的查询参数,必须yyyy-mm-dd检查。

+0

工作,非常感谢你!:D – 2013-05-08 17:26:13