2014-10-15 4 views
0

С следующим кодомSQLite курсор вернется пустой курсор при использовании где

resultSet = mydatabase.rawQuery("Select * from devicelog ", null); 
     Log.e("SyncService", "query fiered.."); 
     if (resultSet.moveToFirst()) { 
      Log.e("SyncService", "moved to first.."); 
      do { 
       Log.e("DB_R", "id: " + resultSet.getInt(resultSet.getColumnIndex("id"))); 
       Log.e("DB_R", "type: " + resultSet.getString(resultSet.getColumnIndex("type"))); 
       Log.e("DB_R", "action: " + resultSet.getString(resultSet.getColumnIndex("action"))); 
       Log.e("DB_R", "oldvalue: " + resultSet.getString(resultSet.getColumnIndex("oldvalue"))); 
       Log.e("DB_R", "newvalue: " + resultSet.getString(resultSet.getColumnIndex("newvalue"))); 
       Log.e("DB_R", "devicedt: " + resultSet.getString(resultSet.getColumnIndex("devicedt"))); 
       Log.e("DB_R", "batterysts: " + resultSet.getDouble(resultSet.getColumnIndex("batterysts"))); 
       Log.e("DB_R", "syncdt: " + resultSet.getString(resultSet.getColumnIndex("syncdt"))); 
       Log.e("DB_R", "deviceid: " + resultSet.getString(resultSet.getColumnIndex("deviceid"))); 
      } while (resultSet.moveToNext()); 
     } 
     if (resultSet != null && !resultSet.isClosed()) { 
      resultSet.close(); 
     } 

     if (mydatabase != null && mydatabase.isOpen()) { 
      mydatabase.close(); 
     } 
     Log.e("SyncService", "query closed.."); 

Я получаю следующий вывод в ADB LogCat

10-15 19:46:33.233: E/SyncService(2446): b4 try.. 
10-15 19:46:33.294: E/SyncService(2446): query fiered.. 
10-15 19:46:33.294: E/SyncService(2446): moved to first.. 
10-15 19:46:33.324: E/DB_R(2446): id: 1 
10-15 19:46:33.324: E/DB_R(2446): type: SETTINGS 
10-15 19:46:33.324: E/DB_R(2446): action: IP changed 
10-15 19:46:33.333: E/DB_R(2446): oldvalue: 0.0.0.0:0 
10-15 19:46:33.333: E/DB_R(2446): newvalue: 10.20.30.40:50 
10-15 19:46:33.333: E/DB_R(2446): devicedt: 2014-10-15 11:01:40 
10-15 19:46:33.355: E/DB_R(2446): batterysts: 0.5 
10-15 19:46:33.355: E/DB_R(2446): syncdt: null 
10-15 19:46:33.355: E/DB_R(2446): deviceid: e4:2d:02:0f:8f:4a 
10-15 19:46:33.355: E/SyncService(2446): query closed.. 

Так одна записи существует с syncdt = нуль. Но когда я FIRE следующий запрос с тем же кодом

resultSet = mydatabase.rawQuery("Select * from devicelog where syncdt = null ", null); 

Я получаю пустой курсор следующим образом:

10-15 19:50:49.957: E/SyncService(2530): b4 try.. 
10-15 19:50:50.117: E/SyncService(2530): query fiered.. 
10-15 19:50:50.157: E/SyncService(2530): query closed.. 

Могу ли я, используя неправильный путь для проверки нулевых значений?

+0

может быть syncdt не «нулевой» в виде строки, но пустой? –

ответ

1

Чтобы получить нулевые значения в том, где использовать is null, поэтому изменить запрос из

resultSet = mydatabase.rawQuery("Select * from devicelog where syncdt = null ", null); 

в

resultSet = mydatabase.rawQuery("Select * from devicelog where syncdt is null", null); 
+0

сделано .. thAnx .. :) – Ankit

+0

@Ankit С удовольствием помогу, наслаждайтесь. –

Смежные вопросы