J'ai une disposition de table que je veux renseigner avec le résultat d'une requête de base de données. J'utilise un select all et la requête renvoie quatre lignes de données.
J'utilise ce code pour remplir les vues de texte à l'intérieur des lignes du tableau
Cursor c = null;
c = dh.getAlternative2();
startManagingCursor(c);
// the desired columns to be bound
String[] columns = new String[] {DataHelper.KEY_ALT};
// the XML defined views which the data will be bound to
int[] to = new int[] { R.id.name_entry};
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
R.layout.list_example_entry, c, columns, to);
this.setListAdapter(mAdapter);
Je veux pouvoir séparer les quatre valeurs différentes de KEY_ALT et choisir leur destination. Je veux qu'ils peuplent quatre textviews différents au lieu d'un dans l'exemple ci-dessus. Comment puis-je parcourir le curseur résultant?
Cordialement, AK
Vous pouvez utiliser le code ci-dessous pour parcourir le curseur et les stocker dans un tableau de chaînes. Vous pouvez ensuite les définir dans quatre vues de texte.
String array[] = new String[cursor.getCount()];
i = 0;
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
array[i] = cursor.getString(0);
i++;
cursor.moveToNext();
}
Les objets Cursor
renvoyés par les requêtes de base de données sont positionnés avant dans la première entrée. Par conséquent, l'itération peut être simplifiée comme suit:
while (cursor.moveToNext()) {
// Extract data.
}
Référence de SQLiteDatabase
.
for (boolean hasItem = cursor.moveToFirst(); hasItem; hasItem = cursor.moveToNext()) {
// use cursor to work with current item
}
L'itération peut être effectuée de la manière suivante:
Cursor cur = sampleDB.rawQuery("SELECT * FROM " + Constants.TABLE_NAME, null);
ArrayList temp = new ArrayList();
if (cur != null) {
if (cur.moveToFirst()) {
do {
temp.add(cur.getString(cur.getColumnIndex("Title"))); // "Title" is the field name(column) of the Table
} while (cur.moveToNext());
}
}
J'accepte de chiranjib, mon code est le suivant:
if(cursor != null && cursor.getCount() > 0){
cursor.moveToFirst();
do{
//do logic with cursor.
}while(cursor.moveToNext());
}
Trouvé un moyen très simple d'itérer sur un curseur
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){
// access the curosr
DatabaseUtils.dumpCurrentRowToString(cursor);
final long id = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
}
public void SQLfunction() {
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect = {"column1","column2" ...};
String sqlTable = "TableName";
String selection = "column1= ?"; //optional
String[] selectionArgs = {Value}; //optional
qb.setTables(sqlTable);
final Cursor c = qb.query(db, sqlSelect, selection, selectionArgs, null, null, null);
if(c !=null && c.moveToFirst()){
do {
//do operations
// example : abcField.setText(c.getString(c.getColumnIndex("ColumnName")))
}
while (c.moveToNext());
}
}
REMARQUE: pour utiliser SQLiteQueryBuilder (), vous devez ajouter
compilez 'com.readystatesoftware.sqliteasset: sqliteassethelper: +' dans votre dossier