J'ai un code:
public String getNameUpdateEvent(long id) {
Cursor mCursor =
db.rawQuery("select name from events WHERE _id=" + id + ";", null);
if (mCursor != null) {
mCursor.moveToFirst();
}
String updateNameEvent;
updateNameEvent = mCursor.getString(mCursor.getColumnIndex("name"));
return updateNameEvent;
}
et je reçois un avertissement
Warning:(173, 45) Method invocation 'mCursor.getColumnIndex("name")' may produce 'Java.lang.NullPointerException'
Comment je peux le réparer pls?
Votre curseur ne peut pas être null
, il aura toujours une valeur quelconque. Mais le curseur peut être vide, vous devez donc tout d’abord aller à la première ligne du curseur avec la méthode moveToFirst()
, et s’il renvoie true
- cela signifie que le curseur a au moins une ligne. Vous pouvez donc utiliser tout ce que vous voulez, le cas échéant. false
- cela signifie qu'il n'y a rien pour votre requête, vous n'avez donc pas de lignes pour obtenir des données. Votre code devrait ressembler à ceci:
public String getNameUpdateEvent(long id) {
Cursor mCursor =
db.rawQuery("select name from events WHERE _id=" + id + ";", null);
String updateNameEvent = null;
if (mCursor != null && mCursor.moveToFirst()) {
updateNameEvent = mCursor.getString(mCursor.getColumnIndex("name"));
}
return updateNameEvent;
}
Solution 1: Puisque vous codez en dur, pourquoi ne pas coder en dur l'index
updateNameEvent = mCursor.getString(0);
Solution 2:
try{
updateNameEvent = mCursor.getString(mCursor.getColumnIndexOrThrow("name"));
}catch(IllegalArgumentException ie){
updateNameEvent = 0;
}
la méthode getColumnIndexOrThrow lève une exception IllegalArgumentException si la colonne n'existe pas.
La solution 1 est plus simple et plus rapide.