Java - Consulta sobre listado de Objetos

 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Consulta sobre listado de Objetos

Publicado por Jose_Romero (10 intervenciones) el 09/11/2018 20:00:13
Buenas tardes, tengo en MySQL una tabla de Departamentos con las siguientes columnas: NumDepartamento, NombreDepartamento, LocDepartamento. El NumDepartamento es el número del departamento (un INT), el NombreDepartamento es el nombre del departamento (un VARCHAR(30)) y el LocDepartamento es la localidad donde se encuentra el departamento (un VARCHAR(30)).

Me gustaría saber como puedo devolver en una lista el número y nombre de todos los departamentos de mi tabla y también otra lista con la consulta de todos los departamentos, es decir, con el numero, nombre y localidad.

Esto es lo que tengo implementado:

Para el primer método:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void departamentos(){
    Connection conn = conectarMySQL();
    //ArrayList<dept> depart = new ArrayList();
    try{
        //PreparedStatement ps = conn.prepareStatement("SELECT * FROM dept");
        //ResultSet rs = ps.executeQuery();
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT deptno, dname FROM dept ");
       while(rs.next()){
           System.out.println(rs.getInt("deptno") + "\t" +
                rs.getString("dname"));
       }
    }catch(SQLException ex){
        Logger.getLogger(EjercicioBD.class.getName()).log(Level.SEVERE, null, ex);
    }
    //return depart;
}

Sé que no lo devuelvo en una lista pero porque no sabría mostrarlo

Para el segundo método:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static ArrayList<dept> departamentos(){
    Connection conn = conectarMySQL();
    ArrayList<dept> depart = new ArrayList();
    try{
        PreparedStatement ps = conn.prepareStatement("SELECT * FROM dept");
        ResultSet rs = ps.executeQuery();
       while(rs.next()){
           System.out.println(rs.getInt("deptno") + "\t" +
                rs.getString("dname"));
           depart.add(new dept(rs.getInt("deptno"), rs.getString("dname"), rs.getString("loc")));
       }
    }catch(SQLException ex){
        Logger.getLogger(EjercicioBD.class.getName()).log(Level.SEVERE, null, ex);
    }
    return depart;
}

Cuando muestro por pantalla este segundo método no me muestra bien los departamentos creados, me muestra lo siguiente: [ejercicio2.dept@6591f517, ejercicio2.dept@345965f2, ejercicio2.dept@429bd883]

¿Cómo podría solucionar ambos problemas?

Muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Consulta sobre listado de Objetos

Publicado por Yamil Bracho (2315 intervenciones) el 09/11/2018 20:21:28
Para el primer caso crea una lista de objetos de una clase que llames Dpto. Esta clase tendra los campos deptno, dname.
En la clase Dpto sobresescribe el metodo toString como :

1
2
3
4
@override
public String toString() {
  return deptno + "," + dname;
}

Si quieres la representacion String de un objeto solo tienes que sobreescribir el metodo toString()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Consulta sobre listado de Objetos

Publicado por Jose_Romero (10 intervenciones) el 09/11/2018 20:47:47
A ver yo para el primer método me refiero, que de las 3 columnas que tengo en mi base de datos de la tabla Departamento me represente solo el numero y el nombre de los departamentos. Vale le he puesto el toString pasandole solo esas dos cosas, ¿pero como lo llamaría?

Tengo lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static List<dept> departamentos(){
    List<dept> departamentos = new ArrayList();
    Connection conn = conectarMySQL();
    try{
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT deptno, dname FROM dept ");
       while(rs.next()){
           //System.out.println(rs.getString("deptno") + "\t" +
           //    rs.getString("dname"));
           departamentos.add(rs.getString("deptno"));    ///////////////////////////////////////////////////////////////////////////////////////////////////////
       }
    }catch(SQLException ex){
        Logger.getLogger(EjercicioBD.class.getName()).log(Level.SEVERE, null, ex);
    }
    return departamentos;
}

Lo que tiene muchas ///////////////////////////// da como error.

Muchas gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Consulta sobre listado de Objetos

Publicado por Yamil Bracho (2315 intervenciones) el 09/11/2018 20:54:50
Crea un constructor en la clase Dept

1
2
3
4
5
public Dept(int deptno, string dname) {
  this.deptno = deptno;
  this.dname = dname;
  this.loc = "";
}


Y cuando quieras agregarlo a la lista

1
2
3
while(rs.next()){
departamentos.add( new Dpto(rs.GetInt("deptno"), rs.getString("deptno"));
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar