2010-05-10 2 views
0

У меня есть небольшое приложение для Android, и в настоящее время я запускаю SQL-запрос в android, чтобы получить количество строк в базе данных для конкретного предложения where.Ведение журнала SQL в Android; у меня есть приложение

Ниже мой пример кода:

public boolean exists(Balloon balloon) { 
    if(balloon != null) { 
     Cursor c = null; 
     String count_query = "Select count(*) from balloons where _id = ?"; 
     try { 
      c = getReadableDatabase().rawQuery(count_query, new String[] {balloon.getId()}); 
      if (c.getCount() > 0) 
       return true; 

     } catch(SQLException e) { 
      Log.e("Running Count Query", e.getMessage()); 
     } finally { 
      if(c!=null) { 
       try { 
        c.close(); 
       } catch (SQLException e) {} 
      } 
     } 
    } 
    return false; 
} 

Этот метод возвращает мне счетчик 1, даже если таблица базы данных на самом деле пуст. Я не могу понять; почему это произойдет. Запуск одного и того же запроса в базе данных дает мне 0 0.

Мне было интересно, можно ли зарегистрировать или просмотреть в журнале все запросы sql, которые в конечном итоге запускаются после базы данных после замены параметров; так что я могу понять, что происходит не так.

Приветствия

+0

Можно попытаться изменить с = getReadableDatabase() rawQuery (count_query, новый String [] {balloon.getId()}). на несколько строк, каждый из которых делает одну вещь, а затем проверяет каждую строку? –

ответ

3

Этот запрос всегда будет возвращать одну запись (равно как и любой SELECT COUNT). Причина в том, что возвращаемая запись содержит поле, указывающее, сколько записей присутствует в таблице «шары» с этим идентификатором.

Другими словами, одна запись (c.getcount()==1) НЕ говорит о том, что количество записей, найденных в воздушных шарах, является одним, а это запись, сгенерированная Sqlite, которая содержит поле с результатом.

Чтобы узнать количество воздушных шаров, вы должны c.movetofirst() и затем numberOfBalloons = c.getInt(0)

+0

Спасибо тонну. Это заставило меня двигаться в правильном направлении. – Priyank

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