Метод, который возвращает 0

-2

Я создал метод для хранения результата запроса SQLite в таблице

public ArrayList <String> getProductName(double idcat) 
    {
        ArrayList <String> tab = new ArrayList <String>();
         try
            {
                Cursor c = null;
                c = database.rawQuery("SELECT " + COL_PRODUCT_NAME + " FROM "
                        + TABLE_PRODUCT + " WHERE " + COL_CATEGORY + "=  '" + idcat + "'", null);

                for(int i=0;i<c.getCount();i++)
                {
                    tab.add(c.getString(c.getColumnIndex(COL_PRODUCT_NAME)));
                    c.moveToNext();
                  }
                c.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }

                return tab;
        }

Я хочу получить количество элементов в этой таблице, поэтому я ставлю это:

ArrayList <String> tab = new ArrayList <String>();
 TextView tv = new TextView(this);
                tab=db.getProductName(1);
                int n =tab.size();
                tv.setText("n=" +n);

Но когда я скомпилирую свое приложение, я получаю 0 !!! Я хочу знать, правильно ли мой метод или нет.

  • 0
    Есть ли у вас открытое соединение с базой данных в то время?
  • 0
    Изменить e.printStackTrace(); throw new RuntimeException(e); знать или читать журналы.
Показать ещё 3 комментария
Теги:

1 ответ

1
Лучший ответ

Я думаю, вам нужно сделать этот вызов первым, прежде чем начинать итерацию курсора:

c.moveToFirst()

Это должно быть что-то вроде этого

if(c.moveToFirst()){
 //Loop here
}
  • 0
    07-19 18: 20: 55.697: E / AndroidRuntime (7369): java.lang.RuntimeException: android.database.CursorIndexOutOfBoundsException: запрошен индекс -1, с размером 7, который отображает logcat
  • 0
    Теперь работает, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню