2013-07-19 38 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();'拋出新的RuntimeException(e);'知道或讀取日誌。 –

+0

從數據庫讀取數據時是否收到異常? – arjoan

回答

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

+0

現在它的工作原理,謝謝您 – Maha