|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Consulta a BD Sqlite con filtros variables
Hola foreros de HTCMania, tengo un problema con una aplicación que estoy haciendo y me preguntaba si alguno de vosotros podriais ayudarme.
Esta aplicacion tiene una base de datos SQLite y mi idea es que el usuario pueda elegir diferentes filtros para definir la busqueda, es decir, que pueda seleccionar los registros a ver buscando por un campo o por varios. Mi problema es que no se como ralizar esa consulta, ya que no se me ocurre como controlar los diferentes criterios porque no son fijos. Un saludo y gracias de antemano. |
|
|
|
#2
|
||||
|
||||
|
Todo depende de como lo estés planteando, suponiendo que uses el query normal y corriente en lugar del rawQuery, tendrás algo parecido a esto:
query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) Lo único que tendrías que hacer es modificar el parámetro "selection" y "selectionArgs" según los criterios que marque el usuario y luego llamar el método "query". |
|
#3
|
||||
|
||||
|
Como te dicen pues según lo estés planteando, yo que trabajo con bases de datos oracle pues me gusta montarme la query y uso rawquery, así que solo tendría que hacer una sql dinámica del estilo
'select * from tabla where 1=1 ' y apartir de aquí ir concatenando tus filtros 'and lo quesea' + 'and lo quesea2'' ...
__________________
Prueba mis aplicaciones para android:
Signature Maker - Código en GitHub Pain Log - Código en GitHub Square attack Última edición por Dild0 Día 10/06/15 a las 11:28:20. |
|
#4
|
||||
|
||||
|
Gracias a los dos por contestar. Como normalmente pasa ahora que tengo respuestas lo veo todo mas claro XD Creo que usare la rawQuery e ir concatenandolas.
Estaba bastante bloqueado constantemente pensando, ya pero si pongo AND delante de todos los WHERE me dara un error de sintaxis y bla bla bla XD No puse (fallo mio) que tambien esta la opcion de que el usuario no pusiera ningun filtro y saliesen todos los registros de la table. Lo que hare sera controlar que en el primer filtro, si lo hay, se ponga el WHERE mas la condicion y todos los siguientes, si los hay, tengan un AND delante. Muchas gracias de nuevo a los dos XD |
|
#5
|
||||
|
||||
|
Gracias a los dos por contestar. Como normalmente pasa ahora que tengo respuestas lo veo todo mas claro XD Creo que usare la rawQuery e ir concatenandolas.
Estaba bastante bloqueado constantemente pensando, ya pero si pongo AND delante de todos los WHERE me dara un error de sintaxis y bla bla bla XD No puse (fallo mio) que tambien esta la opcion de que el usuario no pusiera ningun filtro y saliesen todos los registros de la table. Lo que hare sera controlar que en el primer filtro, si lo hay, se ponga el WHERE mas la condicion y todos los siguientes, si los hay, tengan un AND delante. Muchas gracias de nuevo a los dos XD ![]() Según te lo puse yo no tienes q controlar nada, ya que 'where 1=1' saca todo... a siq ue solo tienes que añadir los 'and' cuando tengas filtro Sería algo asi Cita:dummie_sql = 'Select * from tabla where 1=1'; --query que sacaría todo
filtros = ''; --filtro vacio if (filtro1 == true){ filtros = filtros + ' and mifiltro1=xxxxx' } if (filtro2 == true){ filtros = filtros + ' and mifiltro2=yyyyy' } llamada al rawquery pasandole (dummie_sql + filtros ) ![]() PD: Ten cuidado si filtras texto y no te venga un ingles y ponga comilla I'm It's etc porque te revienta la query
__________________
Prueba mis aplicaciones para android:
Signature Maker - Código en GitHub Pain Log - Código en GitHub Square attack Última edición por Dild0 Día 10/06/15 a las 14:30:47. |
![]() |
Estás aquí
|
||||||
|
||||||