2013-07-19 5 views
-2

I a créé une méthode pour stocker le résultat du SQLite de la demande dans une tableMéthode qui renvoie 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; 
     } 

Je veux obtenir le nombre d'éléments dans ce tableau, donc je mets ceci:

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

Mais quand je compile mon application, n obtiens 0 !!! je veux savoir si ma méthode est correcte ou non

+0

Avez-vous une connexion ouverte à la base de données à ce moment-là? – Rarw

+0

Modifier 'e.printStackTrace();' pour lancer une nouvelle RuntimeException (e); 'pour connaître ou lire les journaux. –

+0

Avez-vous des exceptions lors de la lecture de la base de données? – arjoan

Répondre

1

Je pense que vous devez faire ce premier appel avant de commencer l'itération du curseur:

c.moveToFirst() 

Il devrait y avoir quelque chose comme ça

if(c.moveToFirst()){ 
//Loop here 
} 
+0

07-19 18: 20: 55.697: E/AndroidRuntime (7369): java.lang.RuntimeException: android.database.CursorIndexOutOfBoundsException: Index -1 demandé, avec une taille de 7 ce que l'affichage logcat – Maha

+0

Cela fonctionne maintenant, merci toi – Maha