Foros del Web » Programación para mayores de 30 ;) » Java »

Duda con ResultSet

Estas en el tema de Duda con ResultSet en el foro de Java en Foros del Web. Buenos Dias Amigos. Tengo una gran duda de como hacer lo siguiente: Realizo una consulta a una Base de Datos y con el resultado de ...
  #1 (permalink)  
Antiguo 14/09/2010, 12:16
Avatar de alivizcaya  
Fecha de Ingreso: septiembre-2010
Mensajes: 9
Antigüedad: 13 años, 7 meses
Puntos: 0
Duda con ResultSet

Buenos Dias Amigos.

Tengo una gran duda de como hacer lo siguiente: Realizo una consulta a una Base de Datos y con el resultado de mi ResultSet lleno una Tabla HTML. Hasta aqui todo normal. Lo que quiero hacer es colocar un boton en cada registro que se despliegue en dicha tabla para que al pulsarlo me lleve a otra pagina que me muestre mas información del registro seleccionado. Lo que necesito es que al pulsar el boton, me capture el Id del registro y me lo envie, puede ser como una variable de sesion, a otra pagina para alli desplegar todo el contenido completo de dicho resgistro.

El Boton lo incluyo detro del siclo while del ResultSet dentro de un <td> al lado de cada fila de registros que se muestran en la tabla, pero cuando pulso el boton me captura el Id pero siempres del ultimo registro de la tabla que llena el ResultSet. Para capturar cree una variable String llamada miId, pero parece que se sobreescribe y siempre guarda el ultimo registro cuando termina el siclo while.

Como podria capturar el Id de cada registro de la tabla, para que al pulsar un boton, el programa sepa cual registro esta asociado o vinculado a la fila que pulse ?? Aqui les va una parte del codigo:


<form action="principal.jsp" method = "post">
<table border="1"

<tr>
<th>Caso Num</th>
<th>Titulo</th>
<th>Fecha</th>
<th>Seleccionar</th>
</tr>
<%while(rs.next() )
{%>
<%String miId = rs.getString(1);
sesion.setAttribute("id",miId);
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><input name="GrabarCasoBeans" value="Ver" type="submit"></td>
</tr>

<%}%>
</table>
</form>
  #2 (permalink)  
Antiguo 14/09/2010, 13:32
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Duda con ResultSet

<input type="button" onclick="location.href='rutafichero....html' " />

La ruta del HTTML de cada registro la creas mientras rellenas la tabla con ese registro.

También puedes rear una función en javascript a la que se le pasa un parámetro y sea ella la que redirige.

<input type="button" onclick="funcion(param);" />
  #3 (permalink)  
Antiguo 14/09/2010, 14:48
Avatar de alivizcaya  
Fecha de Ingreso: septiembre-2010
Mensajes: 9
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Duda con ResultSet

Bueno muchas Gracias.

Pero sigue haciendo lo mismo, el valor del id que se envia a otra pagina es el valor del ultimo resgistro de la tabla.

Mi pregunta es como hago para relacionar un boton con cada fila desplegada por la tabla que obtengo a traves de un ResultSet...

De verdad que no logro dar con la solucion...
  #4 (permalink)  
Antiguo 14/09/2010, 16:51
 
Fecha de Ingreso: julio-2010
Mensajes: 9
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Duda con ResultSet

Hola

La razon por la cual te está mandando siempre el ultimo id es que se esta sobreescribiendo tu variable miId , por cada vuelta que de el while.

Como bien decia Xerelo , lo que tienes que hacer es por cada ciclo , construir la url y pasarle como parametro ese id.
por ejemplo

<%while(rs.next() )
{%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><input type="button" onclick="location.href='rutafichero....html?miId=' <%=rs.getString(0)%>" /></td>
</tr>

<%}%>

Algo asi tendrías que hacer. Por cada TR, estaras mandando el id.

Saludos
  #5 (permalink)  
Antiguo 14/09/2010, 17:02
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Duda con ResultSet

No me expliqué bien, usa directamente el valor que recoges del resulset, sin guardar nada en la session.

Cita:
<input type="button" onclick="location.href='rutafichero...<%=rs.getStr ing(1)%>.jsp' " />
Si te resulta complicado crear la dirección así, prueba de la otra forma que te dije


Cita:
<input type="button" onclick="funcion('<%=rs.getString(1)%>');" />

Los scriptlets se ejecutan en el servidor, por lo que cuando llegan a tu navegador tendrás que cada botón es
Cita:
<input type="button" onclick="funcion('Idn');" />
Lógicamente, si la página para mostrar la información extra es dinámica, ese valor de de Id tendrás que pasarlo como parámetro de la url.

algo así
Cita:
<input type="button" onclick="location.href='destino.jsp?id=Idn' " />

La otra forma, que supongo que es la que querías usar, sería pasar el valor del registro seleccionado a la sesión, pero no como lo haces tú, tendrías que usar <input type="button" onclick="funcion('Idn');" /> solo que la función en vez de generar una URL, guardaría el valor de Id en la sesión mediante javascript/AJAX, algo que no te recomiendo.
  #6 (permalink)  
Antiguo 15/09/2010, 08:57
Avatar de alivizcaya  
Fecha de Ingreso: septiembre-2010
Mensajes: 9
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Duda con ResultSet

Gracias amigos...

Lamentablemente intente con todo lo que me dijeron... pero aun asi solo sigo capturando el ultimo Id que me despliega el ResultSet en la Tabla...

Hay un algoritmo que yo pueda usar en JSP o en Java que pueda relacionar un boton con cada fila que es desplegada en la tabla ??

lo que ocurre es que mi variable de session "miId" se reescribe cada vez que pasa por el siclo While, y es por eso solo capturo el ultimo registro de dicho ResultSet....
  #7 (permalink)  
Antiguo 15/09/2010, 12:53
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Duda con ResultSet

Tanto leos05 como yo te lo hemos dicho bien claro

Cita:
NO USES <%String miId = rs.getString(1);sesion.setAttribute("id",miId);%>
Usa rs.getString(1) para generar la dirección, leos05 te ha puesto prácticamente el código que tienes que utilizar

Cita:
Hola

La razon por la cual te está mandando siempre el ultimo id es que se esta sobreescribiendo tu variable miId , por cada vuelta que de el while.

Como bien decia Xerelo , lo que tienes que hacer es por cada ciclo , construir la url y pasarle como parametro ese id.
por ejemplo

<%while(rs.next() )
{%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><input type="button" onclick="location.href='rutafichero....html?miId=' <%=rs.getString(0)%>" /></td>
</tr>

<%}%>

Algo asi tendrías que hacer. Por cada TR, estaras mandando el id.

Saludos
Lo único que tienes que hacer es cambiar rutafichero....html por tupagina.jsp y hacer que tupagina,jsp lea el parametro (getParameter) miId de la request, no de la sesión
  #8 (permalink)  
Antiguo 15/09/2010, 13:24
Avatar de alivizcaya  
Fecha de Ingreso: septiembre-2010
Mensajes: 9
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Duda con ResultSet

Bueno Amigos, les cuento que estaban cerca, pero me ha servido mucho para realizar mi rutina. El problema radicaba en la forma en que me escribieron el codigo, ya que hay que tener muy presente el uso de las comillas dobles " " y las comillas simples ' '

El codigo funciono con la siguiente modificacion:

<td><input type="button" onclick='location.href="verCaso.jsp?miId=<%=rs4.ge tString(1)%>" ' /></td>

Las comillas simples ' ' siempre deben ir por encima de las comillas dobles " " este principio tambien se aplica para los parametros de SQL dentro de un String para crear los ResultSet.

Etiquetas: jsp-servlets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:03.