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:

 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.

  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); 
  • ¿Cómo acceder a la base de datos sqlite existente en Android Emulator?
  • Jest error de caso de prueba en reactivo nativo mediante el complemento externo
  • Evite borrar los datos de la base de datos al hacer clic en el botón "borrar datos" en la configuración de la aplicación en el dispositivo Android
  • El método SQLite .query (), la cláusula WHERE solo toma cadenas de comillas dobles
  • IllegalArgumentException: columna no válida
  • Parámetros de Android SQLite rawquery
  • ¿Puede el androide sqlite interfaz ser utilizado fuera de Android
  • ¿Qué es más rápido: almacenar datos en una lista o en una base de datos? (Androide)
  • Entender el campo de incremento automático de Android de sqlite
  • Búsqueda de Android: Utilice tablas de FTS junto con tablas normales de SQLite DB
  • ¿Qué es una clase completa de ayuda de base de datos Android para una base de datos SQLite existente?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.