Hola,
Cita:
Iniciado por sanchezg
me dijeron q para consultar mas de 1 a la vez seria algo asi...
if (request.getParameterValues("data").length > 0) { String SQLString = "SELECT * FROM data WHERE id IN ("; for (String s : request.getParameterValues("data")) { SQLString += s.toString() + ", "; } SQLString = SQLString.substring(0, SQLString.lastIndexOf(',')) + ")";}
¿Quien te dijo semejante locura?
![ojotes](http://static.forosdelweb.com/fdwtheme/images/smilies/ojotes.png)
Whooops .. perdón .. fui yo
Cita:
Iniciado por sanchezg
... para consultar mas de 1 a la vez ...
El problema es que no das mucha información y es difícil sacar una conclusión real. Que significa para ti 'consultar mas de 1 a la vez'. Traer N criterios y filtrar la consulta, o mostrar los que coinciden parcialmente y son muchos o los que coinciden exactamente y también son muchos.
En el caso que quieras mostrar todos los que coincidieron exactamente tendrías que realizar los siguientes cambios, es decir le agregamos un ciclo para que no muestre solamente el primero,
Código:
String q="select * from material where concepto=\""+concepto+"\"";
try { tabla = instruccion.executeQuery(q);
while (tabla.next()) {
out.println("CLAVE: <INPUT TYPE=TEXT NAME=clave VALUE="+ tabla.getString(2)+ "><BR><BR>");
out.println("TITULO: <INPUT TYPE=TEXT NAME=TITULO VALUE= '"+ tabla.getString(3)+ "'SIZE='100'><BR><BR>");
out.println("PRECIO: <INPUT TYPE=TEXT NAME=PRECIO VALUE= "+ tabla.getString(4)+ "><BR><BR>");
}
En el caso que quieras mostrar los que coinciden parcialmente podrías realizar los siguientes cambios, como estás usando Access el comodín de la instrucción LIKE es '*',
Código:
String q="select * from material where concepto like \"*"+concepto+"*\"";
try { tabla = instruccion.executeQuery(q);
while (tabla.next()) {
out.println("CLAVE: <INPUT TYPE=TEXT NAME=clave VALUE="+ tabla.getString(2)+ "><BR><BR>");
out.println("TITULO: <INPUT TYPE=TEXT NAME=TITULO VALUE= '"+ tabla.getString(3)+ "'SIZE='100'><BR><BR>");
out.println("PRECIO: <INPUT TYPE=TEXT NAME=PRECIO VALUE= "+ tabla.getString(4)+ "><BR><BR>");
}
Ahora bien, si
traes varios valores diferentes en "concepto" (es decir varios input/text con el mismo nombre) entonces tendrías que unirlos para formar una instrucción mas compleja, en ese caso si
se aplica una versión modificada para Strings del código que mostré anteriormente,
Código:
// String concepto = request.getParameter("concepto");
String SQLString = "SELECT TOP 10 * FROM material";
if (request.getParameterValues("concepto").length > 0) {
SQLString = "SELECT * FROM material WHERE concepto IN (";
for (String s : request.getParameterValues("concepto")) {
SQLString += "\"" + s + "\", ";
}
SQLString = SQLString.substring(0, SQLString.lastIndexOf(',')) + ")";
}
// String q="select * from material where concepto="+concepto;
try { tabla = instruccion.executeQuery(SQLString);
while (tabla.next()) {
out.println("CLAVE: <INPUT TYPE=TEXT NAME=clave VALUE="+ tabla.getString(2)+ "><BR><BR>");
out.println("TITULO: <INPUT TYPE=TEXT NAME=TITULO VALUE= '"+ tabla.getString(3)+ "'SIZE='100'><BR><BR>");
out.println("PRECIO: <INPUT TYPE=TEXT NAME=PRECIO VALUE= "+ tabla.getString(4)+ "><BR><BR>");
}
Pero como indica Xerelo también es cierto que sería aconsejable que lo hicieras en un JavaBean, y lo llamaras desde el JSP. Como estas usando campos de tipo input/text con el mismo nombre para desplegar la información, seguramente la lógica de donde recoges el post del form va a cambiar, si es que haces un post de vuelta.
Saludos,
ps:
El código posiblemente pueda contener errores, es solamente para que puedas tener una idea mas clara y profundizar mas en el tema. Esas instrucciones SQL son vulnerables a inyección de código malicioso.