Crear vector a partir de una consulta

Tengo el siguiente escenario: en un formulario jsp necesito realizar un búsqueda en la BD (ésta se puede realizar por medio de varios filtros, ej: nombre, dirección, ...), en este form desde haber un botón "consultar" el cual, la darle clic debe mostrar en un la tabla los registros que cumplen con los filtros...
Resulta que empecé a realizar esto... Pero me confundí ... Y no se como hacerlo... Intente haciendo un vector y llenándolo con los datos arrojados por la consulta... Pero no me funciona... No se que hacer!
1

1 Respuesta

0 pts.
Ok. Lo primero que debes decirme es si usas algún framework de persistencia de datos (hibernate, axis, etc) o si estás accediendo a la BD mediante JDBC. También si usas algún framework del tipo struts, spring, etc.
.
Suponiendo el caso más simple: sin usar frameworks de ningún tipo, lo primero a comprobar es si el servidor de aplicaciones te está devolviendo algún tipo de excepción (fíjate sobre todo si la excepción viene de la base de datos). En caso de que no te dé ningún error, posiblemente sea que en algún punto del código tengas un error lógico (probablemente en la zona del código donde implementes la recogida de datos del formulario o donde estés montando la consulta a la BD con los datos del formulario).
.
Tracea la query justo antes de enviársela a la BD. Y compruébala en el TOAD, sqlPlus, o la la herramienta externa que estés usando para manejar la BD.
En caso de que la query esté bien y te arroje los datos esperados, en lugar de usar un vector usa una estructura java. Útil. LinkedList<String> y recoge los datos como Strings.
.
Otra cosa que también suele pasar mucho es que en la página donde muestres los datos (supongo que será una tabla o algo similar), los datos se intentan meter en campos que no existen (bien sea porque no están definidos o porque no se pone respetan las minúsculas o mayúsculas, etc...)
.
Si el problema viene por una excepción tendrás que copiarme toda la traza de la excepción.
.
Hola ... gracias por la rpta!
Bueno, te cuento que estoy trabajando con con jodbc14... y no estoy utilizando ningún framework... las consultas las hago en sqldeveloper y me arroja resultadoos... ahora tengo ya otro problema en la conexión... :( no me conecta ala BD...
Bueno solucionaré el problema con la BD y ensayaré con lo que me dices...
Aunque mirá como lo estaba haciendo:
public Vector consultarProyecto(String nombre)
            throws ConnectionException, SQLException {
                Vector proyectos = new Vector();
                ProyectoDTO proyecto;
                PreparedStatement ps;
                ResultSet rslt;
                /* Se establece la conexion con la base de datos */
                conectar();
                ps = conexion.prepararSentencia(conexion.getStatement("consultaProyecto"));
                /* Le envia el nombre al Statement para ejecutar la instrucción SQL */
                ps.setString(1, nombre);
                rslt = ps.executeQuery();
                while (rslt.next()) {
                    proyecto = new ProyectoDTO();
                    proyecto.setId_proyecto(rslt.getInt("id_proyecto"));                
                    proyecto.setStr_nombre_pro(rslt.getString("str_nombre_pro"));                   /
                    proyectos.add(proyecto);            
                }
                /* Cierra conexiones establecidas */
                ps.close();
                cerrarConexion();
                /* retorna un objeto de tipo AgrupacionDTO con la información consultada */
                return proyectos;
            }  
Supuestamente acá.. le envío el dato por el cual se va a realizar la búsqueda y seteo la información que debo mostrar en la tabla por que después éste tendrá un link para obtener más información de cada registro...
:(
Muchas gracias, chau
El código es correcto.
Lo único que cambiaría es la estructura, en lugar de un vector usaría una LinkedList (tiene más recursos a la hora de manejar listas de datos). Y supongo que el objeto "conexion" es la clase que usas como envoltura para manejar la conexión a la BD. Implementa el método cerrarConexión() en esta clase (por mantener un poco la coherencia).
.
Si la consulta te arroja datos es buena señal suponiendo que la hayas traceado justo antes del executeQuery(), eso significa que estás recogiendo bien los datos y los estás seteando bien el en el PreparedStament
.
Comprueba la forma en que rellenas los campos de la tabla html (que los id de las celdas sean correctas, que al recorrer el vector se estén seteando bien los datos dentro de las celdas, etc.). Como consejo, primero prueba a enviar los datos "en bruto" (sin usar tablas ni nada) para comprobar que los datos efectivamente están siendo enviados a la página y no hay ningún error en el negociado de datos.
.
Suerte.
Otra cosa,
Si al final optas por dejar la clase Vector como estructura de datos, acuérdate de definir la clase de objetos que va a contener. En este caso.
Vector<ProyectoDTO> proyectos = new Vector<ProyectoDTO>();
Chao
Hola!
Cree el vector así: Vector proyectos = new Vector(); por que estoy trabajando con la version 1.4 y de esta forma se declaran... O bueno a si me dijeron!
Ya logré hacer esto!
Hasta pronto
Muchas gracias!
De nada. Me alegro por ti.
.
Acuérdate de finalizar y puntuar las respuestas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas