Cómo realizar una consulta de SQLite dentro de una aplicación Android?
-
12-09-2019 - |
Pregunta
Estoy tratando de utilizar esta consulta a mi base de datos de Android, pero no devuelve ningún dato. Me estoy perdiendo algo?
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String select = "Select _id, title, title_raw from search Where(title_raw like " + "'%Smith%'" +
")";
Cursor cursor = db.query(TABLE_NAME, FROM,
select, null, null, null, null);
startManagingCursor(cursor);
return cursor;
Solución
Esto le devolverá el cursor requerida
Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"},
"title_raw like " + "'%Smith%'", null, null, null, null);
Otros consejos
Alternativamente, (sql, selectionArgs) existe db.rawQuery.
Cursor c = db.rawQuery(select, null);
Esto también funciona si el patrón que desea hacer coincidir es una variable.
dbh = new DbHelper(this);
SQLiteDatabase db = dbh.getWritableDatabase();
Cursor c = db.query("TableName", new String[]{"ColumnName"}
, "ColumnName LIKE ?" ,new String[]{_data+"%"}, null, null, null);
while(c.moveToNext())
{
// your calculation goes here
}
Vine aquí para un recordatorio de cómo configurar la consulta, pero los ejemplos existentes eran difíciles de seguir. Aquí está un ejemplo con más explicación.
SQLiteDatabase db = helper.getReadableDatabase();
String table = "table2";
String[] columns = {"column1", "column3"};
String selection = "column3 =?";
String[] selectionArgs = {"apple"};
String groupBy = null;
String having = null;
String orderBy = "column3 DESC";
String limit = "10";
Cursor cursor = db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);
Parámetros
-
table
: el nombre de la tabla que desea consultar -
columns
: los nombres de las columnas que desea que se devuelva. No devolver los datos que no es necesario. -
selection
: los datos de fila que desea regresar de las columnas (Esta es la cláusula WHERE.)
-
selectionArgs
:. Este es sustituido por el?
en la cadenaselection
anteriormente -
groupBy
yhaving
: Este grupos duplicados de datos en una columna con datos que tiene ciertas condiciones. Cualquier parámetro que no sean necesarios se pueden establecer en null. -
orderBy
: ordenar los datos -
limit
: limitar el número de resultados para volver
Prueba de esto, esto funciona para mi código nombre es una cadena:
cursor = rdb.query(true, TABLE_PROFILE, new String[] { ID,
REMOTEID, FIRSTNAME, LASTNAME, EMAIL, GENDER, AGE, DOB,
ROLEID, NATIONALID, URL, IMAGEURL },
LASTNAME + " like ?", new String[]{ name+"%" }, null, null, null, null);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow