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

Problemas al mostrar consulta a una base de datos en Java

Estas en el tema de Problemas al mostrar consulta a una base de datos en Java en el foro de Java en Foros del Web. Hola tengo hecha una consulta y necesito mostrarla con Jbuilder a través de un Jtable. ¿Alguien me puede ayudar por favor? Muchas gracias....
  #1 (permalink)  
Antiguo 19/09/2003, 09:55
 
Fecha de Ingreso: septiembre-2003
Mensajes: 142
Antigüedad: 20 años, 7 meses
Puntos: 0
Problemas al mostrar consulta a una base de datos en Java

Hola tengo hecha una consulta y necesito mostrarla con Jbuilder a través de un Jtable. ¿Alguien me puede ayudar por favor?
Muchas gracias.
  #2 (permalink)  
Antiguo 19/09/2003, 13:22
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola ross_av!!!
Nada tan fácil como recorrer el resulset que contenga el resultado de tu select introduciendo los datos en un vector, y luego creas la jtable pasandole por un lado el vector de columnas y por otro el de datos.

En código quedaría mas o menos así
Código:
        Vector vectorDatos = new Vector();
        while(resultSet.next()){
            Vector vector = new Vector();
            vector.add(resultSet.getString("columna1"));
            vector.add(resultSet.getString("columna2"));
            vector.add(resultSet.getString("columna3"));
            vectorDatos.add(vector);
        }
        Vector vectorColumnas = new Vector();
        vectorColumnas.add("COLUMNA 1");
        vectorColumnas.add("COLUMNA 2");
        vectorColumnas.add("COLUMNA 3");        
        JTable jTable = new JTable(vectorDatos, vectorColumnas);
Saludetes,
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #3 (permalink)  
Antiguo 20/09/2003, 06:29
 
Fecha de Ingreso: septiembre-2003
Mensajes: 142
Antigüedad: 20 años, 7 meses
Puntos: 0
Muchísimas gracias, ahora mismo voy a probarlo.
Bye.
  #4 (permalink)  
Antiguo 23/09/2003, 09:53
 
Fecha de Ingreso: septiembre-2003
Mensajes: 142
Antigüedad: 20 años, 7 meses
Puntos: 0
He probado lo que me dijste y no me funciona me dice que no puedo hacer referencia a una variable estática como no estática y que el recordset no existe. ¿Podrías ayudarme? Gracias.
__________________
-----,-----,-----,@
  #5 (permalink)  
Antiguo 24/09/2003, 02:13
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola ross_av!!!

Si posteas tu código a lo mejor nos es mas facil intentar ayudarte.

Saludetes
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #6 (permalink)  
Antiguo 24/09/2003, 09:54
 
Fecha de Ingreso: septiembre-2003
Mensajes: 142
Antigüedad: 20 años, 7 meses
Puntos: 0
Sonrisa

Perdona, tienes razón ahí te envío el código:

public static void main (){
String url = "jdbc:odbc:BDORACLE";
Connection con = null;
Statement stmt = null;
try {
//Carga del driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(java.lang.ClassNotFoundException ex) {
System.err.print("Error Clase No Existe : ");
System.err.println(ex.getMessage());
}
try {
//Establecimiento de la conexión a la base de datos
con = DriverManager.getConnection(url, "scott", "tiger");
//Consultas a la base de datos
stmt = con.createStatement();
if (Alumnos.isSelected()){
ResultSet rs = stmt.executeQuery("SELECT CÓD_USUARIO, NOMBRE_USUARIO," +
"APELLIDO_USUARIO, DNI FROM Usuarios WHERE NIVEL = 'Alumno'");
}
else {
ResultSet rs = stmt.executeQuery("SELECT CÓD_USUARIO, NOMBRE_USUARIO," +
"APELLIDO_USUARIO, DNI FROM Usuarios WHERE NIVEL = 'Profesor'");
}
/* ResultSet rs = stmt.executeQuery("SELECT CÓD_USUARIO, NOMBRE_USUARIO," +
"APELLIDO_USUARIO, DNI FROM Usuarios");*/
Vector vectorDatos = new Vector();
while(rs.next()){
Vector vector = new Vector();
vector.add(rs.getString("CÓD_USUARIO"));
vector.add(rs.getString("NOMBRE_USUARIO"));
vector.add(rs.getString("APELLIDO_USUARIO"));
vector.add(rs.getString("DNI"));
vectorDatos.add(vector);
}
Vector vectorColumnas = new Vector();
vectorColumnas.add("CÓDIGO");
vectorColumnas.add("NOMBRE");
vectorColumnas.add("APELLIDO");
vectorColumnas.add("DNI");
JTable jTable1 = new JTable (vectorDatos, vectorColumnas);
//Cerrar la conexión
rs.close();
stmt.close();
con.close();
}
catch(SQLException exc) {
System.err.println("Error al ejecutar SQL en Dialogo1: " + exc.getMessage());
}
}

Muchas gracias.
  #7 (permalink)  
Antiguo 27/09/2003, 04:57
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola ross_av!!!

Comentarte que lo unico que veo raro en tu código es lo siguiente:

1.- El método main debería tener esta pinta en la declaración:

Código:
public static void main(String[] args) {
}
2.- El ResultSet debes declararlo antes del if, para que siga existiendo a la salida del mismo

Código:
            ResultSet rs = null;
            if (Alumnos.isSelected()) {
                rs = stmt.executeQuery("SELECT CÓD_USUARIO, NOMBRE_USUARIO," +
                        "APELLIDO_USUARIO, DNI FROM Usuarios WHERE NIVEL = 'Alumno'");
            } else {
                rs = stmt.executeQuery("SELECT CÓD_USUARIO, NOMBRE_USUARIO," +
                        "APELLIDO_USUARIO, DNI FROM Usuarios WHERE NIVEL = 'Profesor'");
            }
Finalmente comentarte que no basta con crear la JTable para ver algo en pantalla, ahi va un ejemplo completo de como visualizar una JTable en pantalla.
Código:
import javax.swing.*;
import java.util.Vector;

public class Pruebas {
    public static void main(String[] args) {
        Vector vectorDatos = new Vector();
        for(int i = 0; i < 10; i++){
            Vector vectorAux = new Vector();
            vectorAux.add("1");
            vectorAux.add("2");
            vectorAux.add("3");
            vectorDatos.add(vectorAux);
        }
        Vector vectorCabecera = new Vector();
        vectorCabecera.add("Columna1");
        vectorCabecera.add("Columna2");
        vectorCabecera.add("Columna3");
        JFrame ventana = new JFrame();
        JTable tabla = new JTable(vectorDatos, vectorCabecera);
        JScrollPane jScrollPane = new JScrollPane();
        jScrollPane.setViewportView(tabla);
        ventana.getContentPane().add(jScrollPane);
        ventana.pack();
        ventana.setVisible(true);
    }
}
Espero te sirva,
un saludo
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #8 (permalink)  
Antiguo 27/09/2003, 09:09
 
Fecha de Ingreso: septiembre-2003
Mensajes: 142
Antigüedad: 20 años, 7 meses
Puntos: 0
Sonrisa

Gracias de nuevo, me estás siendo de gran ayuda porque es la primera vez que veo Java y la verdad es que me cuesta un poco.
Por cierto ¿por qué haces un bucle for desde 0 hasta 10?

Bye.

Última edición por ross_av; 27/09/2003 a las 09:30
  #9 (permalink)  
Antiguo 28/09/2003, 08:29
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0


Mi único objetivo es rellenar 10 filas de datos para que vieses una jtable rellena.

En la realidad tienes que usar el código que te pase para rellenar el vector de datos de la jtable.

Saludetes
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #10 (permalink)  
Antiguo 29/09/2003, 09:54
 
Fecha de Ingreso: septiembre-2003
Mensajes: 142
Antigüedad: 20 años, 7 meses
Puntos: 0
Estoy probando lo que me dijiste y no me funciona no sé si es que al hacerlo con Jbuilder será diferente, pero no me sale nada en la tabla.
  #11 (permalink)  
Antiguo 29/09/2003, 11:12
 
Fecha de Ingreso: septiembre-2003
Mensajes: 142
Antigüedad: 20 años, 7 meses
Puntos: 0

Ya encontré el fallo era culpa mía. Muchas gracias por tu ayuda.
Bye.
  #12 (permalink)  
Antiguo 29/09/2003, 14:52
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Felicidades!!!

Ahora no lo dejes y sigue aprendiendo
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #13 (permalink)  
Antiguo 30/09/2003, 10:35
 
Fecha de Ingreso: septiembre-2003
Mensajes: 142
Antigüedad: 20 años, 7 meses
Puntos: 0
Muchísimas gracias, seguiré aprendiendo como me aconsejas.
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 03:50.