¿DÓNDE IN cláusula en Android sqlite?

No puedo obtener la cláusula WHERE IN para trabajar en la base de datos SQLite android.

¿Hay alguna manera de ejecutar una declaración como esta en android? :

SELECT body FROM table1 WHERE title IN ('title1', 'title2', 'title3') 

Tendrás que usar el método rawQuery :

 Cursor c = db.rawQuery("SELECT body FROM table1 WHERE title IN ('title1', 'title2', 'title3')"); 

Puede utilizar TextUtils.join(",", parameters) para aprovechar los parámetros de enlace sqlite, donde los parameters son una lista con "?" Los marcadores de posición y la cadena de resultado es algo así como "?,?,..,?" .

He aquí un pequeño ejemplo:

 Set<Integer> positionsSet = membersListCursorAdapter.getCurrentCheckedPosition(); List<String> ids = new ArrayList<>(); List<String> parameters = new ArrayList<>(); for (Integer position : positionsSet) { ids.add(String.valueOf(membersListCursorAdapter.getItemId(position))); parameters.add("?"); } getActivity().getContentResolver().delete( SharedUserTable.CONTENT_URI, SharedUserTable._ID + " in (" + TextUtils.join(",", parameters) + ")", ids.toArray(new String[ids.size()]) ); 

Si utiliza un proveedor de contenido, puede utilizar la función de consulta como tal:

 getContentResolver().query(URI,new String[] {"body"}, "title IN ?", new String[] {"('title1','title2','title3')"}, null) 

Tenga en cuenta que no he probado esto, pero de acuerdo con la documentación, esto debería funcionar.

Por favor, eche un vistazo a esta respuesta . Me ayudó en el caso similar.

 String[] names = { "name1", "name2" }; // do whatever is needed first String query = "SELECT * FROM table" + " WHERE name IN (" + makePlaceholders(names.length) + ")"; Cursor cursor = mDb.rawQuery(query, names); 

El punto principal aquí es proporcionar marcadores de posición variable de signos de interrogación (?) Para que coincida con los elementos de la cláusula IN. Y por supuesto – argumento para ellos como matriz de String.

Otra forma de hacerlo

 Cursor mCursor = SQLiteDatabase.query(true, "Name of table","String array of selection columns","title in ('title1', 'title2', 'title3')", null, null, null, null, null); if (mCursor != null) { mCursor.moveToFirst(); } 

Agregando a la respuesta de Cristian: Mientras que su respuesta funcionará, usted debe intentar utilizar la manera correcta de preguntar:

db.rawQuery("Select * from table1 where title = ?", new String[]{param1});

Este enfoque también se puede usar con la cláusula WHERE IN, pero la cadena pasada tiene que estar en formato de 'asd', 'zxc', 'qwe'

Me gusta esto:

 String param1 = "\'asd\',\'zxc\',\'qwe\'"; db.rawQuery("Select * from table1 where title in (?)", new String[]{param1}); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.