Obtener el resultado del cursor y convertirlo en una cadena para TextView
Esta es mi pregunta:
Cursor nextdate(String Date) { SQLiteDatabase db = this.getReadableDatabase(); String[] params = new String[]{String.valueOf(Date)}; Cursor cur = db.rawQuery(" SELECT MIN (" + colDateDue + ") FROM " + PAYMENTS + " WHERE " + colDateDue + ">=?", params); cur.moveToFirst(); return cur; }
Quiero mostrar el resultado de esa consulta en un TextView, pero no sé cómo, por lo que, naturalmente, busco una respuesta. Encuentro algunas respuestas alrededor y vengo con esto:
- Compruebe si un registro existe o no, si existe, actualícelo y cree otro en PhoneGap?
- Java.lang.StringIndexOutOfBoundsException: index = 0 length = 0 en obtener la base de datos sqlite
- Androide. ActiveJDBC es posible?
- Android y SQLite: ¿Cuándo usar punto y coma para finalizar las sentencias?
- Android cierre y apertura de base de datos SQLite en el nivel de aplicación
DatabaseHelper db = new DatabaseHelper(this); String str = ""; if (c!= null) { if (c.moveToFirst()) { str = c.getString(c.getColumnIndex(db.colDateDue); } } TextView.setText(str);
Pero consigo el error
Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
Lo que me hizo un poco confundido ya que la solución habitual para ese error es usar cur.moveToFirst();
Que se utiliza en ambos casos … ¿qué estoy haciendo mal exactamente?
- SQLite rawQuery campos de selecciónArgs y enteros
- Android SQLiteException "no such table" durante la compilación: tabla INSERT INTO
- Android insertWithOnConflict devolviendo el valor equivocado
- Android, Diacritic Insensitive SQLite Búsqueda
- ¿Qué hacer con Cursor después de una consulta SQLite?
- Android SQLite Facilidad de reversión de transacciones?
- Java.lang.StackOverflowError
- Unidad de pruebas de creación de una base de datos SQLite utilizando Spock y Robospock
Intente de esta manera:
Mantener el índice de columna como 0 porque ese cursor tendrá sólo una columna.
DatabaseHelper db = new DatabaseHelper(this); String str = ""; if (c!= null) { if (c.moveToFirst()) { str = c.getString(0); } } TextView.setText(str);
Está intentando utilizar el índice de db.colDateDue
. Sin embargo, eso no se correlaciona con su consulta real. Usted puede felizmente tirar el primer resultado con:
str = c.getString(0);
- Hacer polígonos que se pueden hacer clic en Google Maps (para Android)
- VoIP RTP Streaming desde / hacia el servidor (en Java) hacia / desde android