[SQLite] Erreur Index 0 requested with a size of 0
Bonjour,
Avec SQLite, j'ai créer une base de donnée. Je la stocke avec une méthode dans un tableau. Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public Mesures[] getTabMesures(){
String query ="SELECT * FROM "+TABLE_MESURES;
//2.get reference to writable DB
SQLiteDatabase db=this.getWritableDatabase();
Cursor cursor=db.rawQuery(query, null);
Mesures[] liste = new Mesures[cursor.getCount()];
//si aucun élément n'a été retourné dans la requête, on renvoie null
if (cursor.getCount() == 0)
{
Mesures mesures = new Mesures();
return(null);
}
else
{
//Sinon on se place sur le premier élément
cursor.moveToFirst();
Mesures mesures = new Mesures();
for (int i = 0; i < cursor.getCount(); i++)
{
mesures.setID(cursor.getString(0));
mesures.setLibelle(cursor.getString(1));
mesures.setDescription(cursor.getString(2));
liste[i]=mesures;
cursor.moveToNext();
}
return (liste);
}
} |
J'ai fait une autre méthode pour pouvoir comparer une chaîne avec l'ensemble des id de la base :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public Mesures getLibelle(String fus){
String query ="SELECT Libelle FROM "+TABLE_MESURES+" WHERE id= '"+fus+"'";
//2.get reference to writable DB
SQLiteDatabase db=this.getWritableDatabase();
Cursor cursora=db.rawQuery(query, null);
if (cursora!=null)
cursora.moveToNext();
//4.build mesures object
Mesures mesures=new Mesures();
mesures.setLibelle(cursora.getString(0));
//5.return mesures
db.close();
return mesures;
} |
Dans mon code, j'utilise les méthodes ainsi :
Code:
1 2 3 4
| final Mesures[] a = db.getTabMesures();
for(int i=0;i<=a.length;i++){
Libelle.setText((CharSequence) db.getLibelle(fus));
} |
Quand j’exécute mon application, l'erreur écrite dans l'intitulé s'affiche dans le logcat.
Quelqu'un saurait m'expliquer d'où vient l'erreur? J'ai du faire une erreur dans l'utilisation des méthodes, mais je ne vois pas.
Je débute en java, la majorité de mon code résulte de morceaux de code trouvés à gauche, à droite sur Internet.
Merci d'avance de votre compréhension et pour vos réponses!