Mettre le curseur de données dans un tableau
Étant nouveau dans Android, je vais avoir de la difficulté à composer avec les éléments suivants:
public String[] getContacts(){
Cursor cursor = getReadableDatabase().rawQuery("SELECT name FROM contacts", null);
String [] names = {""};
for(int i = 0; i < cursor.getCount(); i ++){
names[i] = cursor.getString(i);
}
cursor.close();
return names;
}
La suite me donne l'erreur suivante:
09-18 10:07:38.616: E/AndroidRuntime(28165): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sqllitetrial/com.example.sqllitetrial.InsideDB}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 5
Je suis en train d'extraire les données à l'intérieur du curseur à un tableau. Quelqu'un peut m'aider avec la mise en œuvre.
il est préférable de l'utiliser arraylist au lieu de string[] .
Aider lien complet Pour u androidhive.info/2011/11/android-sqlite-database-tutorial
Aider lien complet Pour u androidhive.info/2011/11/android-sqlite-database-tutorial
OriginalL'auteur Rakeeb Rajbhandari | 2013-09-18
Vous devez vous connecter pour publier un commentaire.
"je" n'est pas le curseur de la ligne de l'index, l'index de colonne. Un curseur est déjà positionné à une ligne spécifique. Si vous avez besoin de déplacer votre curseur. Utilisez le curseur.déplacer ou moveToXXXX (voir la documentation).
Pour getString/Int/Long etc. vous avez juste besoin de dire le curseur de la colonne que vous voulez. Si vous ne connaissez pas la columnIndex vous pouvez utiliser
cursor.getColumnIndex("yourColumnName")
.Votre boucle devrait ressembler à ceci:
cursor.moveToNext()
vous pouvez avoir besoin de modifier votre code. voir modifier ci-dessusQuelques bugs: le curseur.close(); return noms.toArray(new String[noms.size()]); Mais merci beaucoup pour la solution!
merci, j'ai édité. Je serais perdu sans mon IDE + de saisie semi-automatique. Sur une note de côté, c'est probablement une bonne idée d'envelopper le tout dans un
try/catch
et mettre le curseur.close() dans le bloc finally.OriginalL'auteur Su-Au Hwang
J'espère que son utile pour vous.
Pouvez-vous poster le ModelAgents Classe?
OriginalL'auteur dipali
Lorsque le curseur est retourné par une requête de base de données, il est mis à l'index -1 qui est au-dessus de la première entrée du curseur de sorte que, avant d'utiliser le curseur pour obtenir les données que vous avez de la déplacer vers sa première position. Pour ajouter
cursor.MoveToFirst();
après
Curseur curseur = getReadableDatabase().rawQuery("SELECT nom from contacts", null);
OriginalL'auteur
utiliser ceci:
OriginalL'auteur Piyush
Essayer de mettre les données dans la
ArrayList<String>
comme ci-dessous:OriginalL'auteur GrIsHu