Android SQLite select * de la tabla donde nombre como% key% usando instrucciones preparadas
Quiero usar declaraciones preparadas para prevenir las inyecciones SQL en la base de datos SQLite de Android. Sin embargo, rawquery se bloquea cuando la consulta contiene Like
y funciona con Where name = ?
¿Hay una manera de utilizar instrucciones similares y preparadas en Android SQLite db?
Esta es la consulta:
- Implementación SQLite deficiente? Acceso a los datos por primera vez demasiado lento
- OrmLite SQLiteException: ninguna tabla
- Android: Actualización de bases de datos locales desde una base de datos en línea
- ¿Cómo seleccionar valores distintos de una columna en la tabla?
- Cómo contar la fila de una tabla de base de datos sqlite android
sqlQuery = "SELECT * FROM " + TABLE_CALLS + " where " + CALLER_NAME + " like ? COLLATE NOCASE or " + CALLER_NBR + " like ? or " + CALLER_EXT + " like ?" + " or " + IS_OUTGOING + " like ? COLLATE NOCASE or " + TYPE + " like ? COLLATE NOCASE"; Cursor cursor = database.rawQuery(sqlQuery, new String[]{"%" + criterion + "%", "%" + criterion + "%","%" + criterion + "%","%" + criterion + "%","%" + criterion + "%"});
Da un índice de enlace o columna fuera de rango Gracias.
- Mueva el cursor a la fila por una de las columnas
- Cómo construir una consulta SQLite a GROUP by ORDER?
- Acceso a la aplicación de Android Lite para Android
- Android cadena de escape real en sqlite
- ¿Qué hará un SQLiteCursor si una columna es nula?
- Utilice Insertar o Reemplazar en ContentProvider
- Problema con SQLiteOpenHelper en android 2.X y 3.X
- Datos de exportación de Android a csv
if (name.length() != 0) { name = "%" + name + "%"; } if (email.length() != 0) { email = "%" + email + "%"; } if (Phone.length() != 0) { Phone = "%" + Phone + "%"; } String selectQuery = " select * from tbl_Customer where Customer_Name like '" + name + "' or Customer_Email like '" + email + "' or Customer_Phone like '" + Phone + "' ORDER BY Customer_Id DESC"; Cursor cursor = mDb.rawQuery(selectQuery, null);`
Tratar
Cursor cursor = database.rawQuery(sqlQuery, new String[]{"'%" + criterion + "%'", "'%" + criterion + "%'", "'%" + criterion + "%'", "'%" + criterion + "%'", "'%" + criterion + "%'"});
Te estás perdiendo el "'" antes y después.
Probar como
String[] a = new String[5]; a[0] = '%' + criterion + '%'; a[1] = '%' + criterion + '%'; a[2] = '%' + criterion + '%'; a[3] = '%' + criterion + '%'; a[4] = '%' + criterion + '%'; Cursor cursor = database.rawQuery(sqlQuery,a);
- Recursos de Android $ NotFoundException
- Cómo recuperar datos de la base de datos sqlite en android y mostrarla en TextView