Pasar parametro a un dataset

19/08/2008 - 22:56 por Rick | Informe spam
Que tal foro, una duda, tengo una consulta sql la cual involucra la clausula
IN de SQL, el problema es que tengo que pasarle varias palabras para que
estén dentro de ese IN, normalmente la sql seria por ejemplo

select * from tabla where llave in ('A','B','C')

osea que quiero las filas cuyo campo llave sea A, B o C

ya tengo mi dataset hecho y le puse parametros para pasar esto

select * from tabla where llave in (@parametros)

el chiste es que pueden ser de 1 a N palabras las cuales pueden ir en el IN

pero al ejecutar mi aplicacion no me regresa datos, ya estube depurando y me
doy cuenta de que no me respeta el valor de @parametros

ejemplo de lo que hago;

String valores="";

MiDataset ds = new MiDataset;

MiDatasetTableAdapters.tablaTableAdapter miTA = new
MiDatasetTableAdapters.tablaTableAdapter;

valores="'A','B','C'";

miTA.Fill(ds.tabla, valores);



tambien intenté con

valores="A,B,C"; y nada =(

no toma los valores 1x1 para ser incluidos en la consulta, no se que tome,
pero si le pongo un solo valor si funciona =(

mi problema es como hacerle para mandar los N restantes =( alguna idea?



Saludos!!!
 

Leer las respuestas

#1 Juan Diego Bueno
20/08/2008 - 08:42 | Informe spam
Hola Rick:

Rick ha formulado la pregunta :
Que tal foro, una duda, tengo una consulta sql la cual involucra la clausula
IN de SQL, el problema es que tengo que pasarle varias palabras para que
estén dentro de ese IN, normalmente la sql seria por ejemplo

select * from tabla where llave in ('A','B','C')

osea que quiero las filas cuyo campo llave sea A, B o C

ya tengo mi dataset hecho y le puse parametros para pasar esto

select * from tabla where llave in (@parametros)

el chiste es que pueden ser de 1 a N palabras las cuales pueden ir en el IN

pero al ejecutar mi aplicacion no me regresa datos, ya estube depurando y me
doy cuenta de que no me respeta el valor de @parametros

ejemplo de lo que hago;

String valores="";

MiDataset ds = new MiDataset;

MiDatasetTableAdapters.tablaTableAdapter miTA = new
MiDatasetTableAdapters.tablaTableAdapter;

valores="'A','B','C'";

miTA.Fill(ds.tabla, valores);



tambien intenté con

valores="A,B,C"; y nada =(

no toma los valores 1x1 para ser incluidos en la consulta, no se que tome,
pero si le pongo un solo valor si funciona =(

mi problema es como hacerle para mandar los N restantes =( alguna idea?



Eso me pasó a mi hace tiempo y es por la propia naturaleza de los
parámetros. No vas a poder hacer un @parametro='a','b','c'. Esto tiene
bastante que ver con impedir la inyección de sql.

Tendrías que currarte un método que te cree dinámicamente parámetros de
forma que al final tengas un in (@p1,@p2,@p3...), y a la par has de
cambiar la query de forma dinámica.

Saludos

http://www.moondance.es

Preguntas similares