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

Respuesta
 
Herramientas
  #1  
Viejo 09/06/15, 21:16:59
Array

[xs_avatar]
NairdaNightmare NairdaNightmare no está en línea
Usuario poco activo
 
Fecha de registro: jun 2015
Mensajes: 2
Tu operador: Movistar

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.
Responder Con Cita


  #2  
Viejo 10/06/15, 00:09:31
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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".
Responder Con Cita
  #3  
Viejo 10/06/15, 11:23:00
Array

[xs_avatar]
Dild0 Dild0 no está en línea
Usuario muy activo
 
Fecha de registro: may 2009
Mensajes: 860
Tu operador: Pepephone

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'' ...
__________________

Última edición por Dild0 Día 10/06/15 a las 11:28:20.
Responder Con Cita
  #4  
Viejo 10/06/15, 12:00:38
Array

[xs_avatar]
NairdaNightmare NairdaNightmare no está en línea
Usuario poco activo
 
Fecha de registro: jun 2015
Mensajes: 2
Tu operador: Movistar

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
Responder Con Cita
  #5  
Viejo 10/06/15, 14:16:18
Array

[xs_avatar]
Dild0 Dild0 no está en línea
Usuario muy activo
 
Fecha de registro: may 2009
Mensajes: 860
Tu operador: Pepephone

 Cita: Originalmente Escrito por NairdaNightmare Ver Mensaje
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 )
Perdón si hay errores en el código que me lio con tanto lenguaje de programación.


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
__________________

Última edición por Dild0 Día 10/06/15 a las 14:30:47.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 18:50:25 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /