2013-05-08 138 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