2013-07-19 2 views
-2

Я создал метод для хранения результата запроса SQLite в таблицеМетод, который возвращает 0

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); 

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

+0

У вас есть открытая связь с базой данных в то время? – Rarw

+0

Измените 'e.printStackTrace();' 'throw new RuntimeException (e);' знать или читать журналы. –

+0

Вы получаете какое-либо исключение при чтении из БД? – arjoan

ответ

1

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

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 – Maha

+0

Теперь он работает, спасибо вы – Maha

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