Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2009, 15:21
ClaCS
 
Fecha de Ingreso: enero-2007
Mensajes: 63
Antigüedad: 18 años, 1 mes
Puntos: 2
Pregunta Struts 1.2.9 (NB6.1) - Problemas con ResultSet para el mostrado de Datos

Para evitar lo de los beans en el mostrado de datos quice utilizar un resultset q paso desde personaDAO

Código:
 static public ResulSet listar_personas() throws Exception {

        PreparedStatement ps = null;
        ResultSet rs = null;
        conexion db = new conexion();
        Connection cnn = db.getConnection();

        try {
            String sql = "select * from personas";                   
            ps = cnn.prepareStatement(sql);            
            rs = ps.executeQuery();  
	       
        } finally {
            if (cnn != null) {
                cnn.close();
            }
        }
        return rs;
    }
y lo paso al jsp por el Action

Código:
	ResultSet rs = personaDAO.listar_personas();
        request.setAttribute("rsPersonas", rs);

        return mapping.findForward("verPersonas");
y en el jsp no se como llenar la tabla con el ResulSet y el <logic:iterator>

pero al hacer la prueba con un text para ver si me devuelve datos el ResultSet

Código:
<%@ page import="java.sql.ResultSet" %>
...

Nombres: <input type="text" value='<%=((ResulSet) request.getAttribute("rsPersonas")).getString("nombres") %>'>
me sale un error sql q me dice "la conexion esta cerrada" ... viendo el codigo este error es obvio ya q antes de devolver el ResultSet cierro la conexion en el personaDAO

Entonces me pregunte si existe una forma de mantener el ResultSet estando cerrada la conexion y me encontre con com.sun.rowset.CachedRowSetImpl q es como una copia del ResulSet pero q permance activa a pesar de haber cerrado la conexion ...

modificando personaDAO

Código:
 static public CachedRowSetImpl listar_personas() throws Exception {

        PreparedStatement ps = null;
        ResultSet rs = null;
        conexion db = new conexion();
        Connection cnn = db.getConnection();
	CachedRowSetImpl c = new CachedRowSetImpl();

        try {
            String sql = "select * from personas";                   
            ps = cnn.prepareStatement(sql);            
            rs = ps.executeQuery();

	c.populate(rs);  
	       
        } finally {
            if (cnn != null) {
                cnn.close();
            }
        }
        return c;
    }

el problema es q no se como acceder a los datos de cada columna q tiene el objeto y despues hacerlo trabajar con el <logic:iterator> en el jsp (lo mismo me sucede con el ResultSet q comente al inicio)

Existe alguna otra forma de poder capturar los datos, mantenerlos y mostrarlos??? sin necesidad de un ResulSet, CachedRowSetImpl o bean??? O se podra simplemente con estos...como???



gracias por todo de antemano