Ho un'app che utilizza un cursore per eseguire una query SQlite.L'app si arresta in modo anomalo se il cursore SQLite non ha risultati
public Cursor totaltrips(){
Cursor cursor = database.rawQuery("SELECT * AS TTotal FROM " + DatabaseHelper.TABLE_NAME, null);
return cursor;
}
I risultati vengono archiviati in un Arraylist con un massimo di 5 valori. Se non ci sono record nel database, l'app si arresta in modo anomalo. Se ho una o più voci del database, funziona bene. Qualcuno sa come posso impedirgli di andare in crash quando non ci sono voci del database?
// get column value
if (Distance.moveToNext())
result = String.valueOf(Distance.getDouble(Distance.getColumnIndex("myTotal")));
tnmView.setText(result);
List<String> distancearray = new ArrayList<String>();
Cursor cursor = dbManager.totaldistance();
do{
distancearray.add(cursor.getString(1));
}while ((cursor.moveToNext()));
ttrips = cursor.getCount();
Log.i("Graph", "TTRIPS = " + ttrips);
// Be sure here to have at least the 5 desired elements into the list
while(distancearray.size() < 5){
distancearray.add("0");
}
Arresto anomalo dell'applicazione con l'errore
android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
Sulla linea
do{
distancearray.add(cursor.getString(1));
}while ((cursor.moveToNext()));
prima di poter controllare cursor.getCount()> 0 ... – sector11
è sufficiente aggiungere il ciclo Do While in if/else dichiarazione 'if (curser.getCount()> 0) {// do-while loop here} – Opiatefuchs
basta controllare cursor.getCount()> 0 prima di fare il ciclo – itsa04g9