studio programacion herramientas fundamentos con avanzado aplicaciones android sqlite cursor

programacion - manual de android en pdf



Iterar a través de filas desde Sqlite-query (7)

Encontré una manera muy simple de iterar sobre un cursor

for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){ // access the curosr DatabaseUtils.dumpCurrentRowToString(cursor); final long id = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID)); }

Tengo un diseño de tabla que deseo completar con el resultado de una consulta de base de datos. Yo uso un seleccionar todo y la consulta devuelve cuatro filas de datos.

Uso este código para completar las textviews dentro de las filas de la tabla.

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);

Quiero ser capaz de separar los cuatro valores diferentes de KEY_ALT, y elegir dónde van. Quiero que completen cuatro vistas de texto diferentes en lugar de una en mi ejemplo anterior. ¿Cómo puedo iterar a través del cursor resultante?

Saludos, AK


Estoy de acuerdo con chiranjib, mi código es el siguiente:

if(cursor != null && cursor.getCount() > 0){ cursor.moveToFirst(); do{ //do logic with cursor. }while(cursor.moveToNext()); }


La iteración se puede hacer de la siguiente manera:

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()); } }


Puede usar el código a continuación para ir a través del cursor y almacenarlos en una matriz de cadenas y luego de configurarlos en cuatro textview

String array[] = new String[cursor.getCount()]; i = 0; cursor.moveToFirst(); while (!cursor.isAfterLast()) { array[i] = cursor.getString(0); i++; cursor.moveToNext(); }


Cursor objetos del Cursor devueltos por las consultas de la base de datos se colocan antes de la primera entrada, por lo tanto, la iteración se puede simplificar a:

while (cursor.moveToNext()) { // Extract data. }

Referencia de SQLiteDatabase .


for (boolean hasItem = cursor.moveToFirst(); hasItem; hasItem = cursor.moveToNext()) { // use cursor to work with current item }


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()); } }

NOTA: para usar SQLiteQueryBuilder () debe agregar

compile ''com.readystatesoftware.sqliteasset: sqliteassethelper: +'' en su archivo de calificación