Java - Como mostrar los datos de una consulta en un jtable

 
Vista:
Imágen de perfil de Edinson
Val: 40
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Como mostrar los datos de una consulta en un jtable

Publicado por Edinson (22 intervenciones) el 20/10/2016 22:19:18
Tengo esta consulta
SELECT t.id_tarifa_t, r.ciudad_origen, r.ciudad_destino, s.descripcion_s , t.hora_salida, t.costo_pasaje
FROM tarifa t , ruta10 r, servicio s WHERE t.id_servicio = s.id_servicio AND t.id_ruta = r.id_ruta

estoi cogiendo los datos de 3 tablas que tengo en mi BD en MYSQL UTILIZO el servidor XAMP . y al ejecutar la consulta me muestra los datos que yo deseo
Sin-titulo

pero yo quiero hacer esa misma consulta y ejecutarla y que esos datos se cargen en un jtable desde netbeans..
alguien que me de una ayudadita ..se los agradeceria muchisimo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
String consulta = "SELECT t.id_tarifa_t, r.ciudad_origen, r.ciudad_destino, s.descripcion_s , t.hora_salida, t.costo_pasaje FROM  tarifa t , ruta10 r,   servicio s WHERE t.id_servicio = s.id_servicio AND t.id_ruta = r.id_ruta";
 
String cargar[] = new String[5];
 
Statement sta = con.createStatement();
ResultSet rs = sta.executeQuery(consulta);
 
int f = tabla_tarifa.getRowCount();
 
for (int i = 0; i < f; i++) {
 
    modelo_tarifa.removeRow(0);
}
 
while (rs.next()) {
 
    cargar[0] = rs.getString("t.id_tarifa");
    cargar[1] = rs.getString("r.ciudad_origen" +rs.getString("r.ciudad_destino"));
    cargar[2] = rs.getString("s.descripcion_s");
    cargar[3] = rs.getString("t.hora_salida");
    cargar[4] = rs.getString("t.costo_pasaje");
    modelo_tarifa.addRow(cargar);
 
}

Lo intento hacer asi y no me resulta
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

Como mostrar los datos de una consulta en un jtable

Publicado por YYanes (144 intervenciones) el 21/10/2016 14:37:16
Hola amigo:

la primera recomendación que le hago es que separe su conexión a la base de datos de la interfaz del programa, es decir, creas una clase de acceso a datos (ADO) y ahí vas poniendo todos los métodos de interacción con la BD que necesites: insert, select, update y delete. Luego crea clases (por ejemplo, una clase Viaje que tenga como atributos todos esos parámetros de tu consulta) y así tendrás un objeto completo que retornar en los métodos de tu calse ADO. Te pondré un ejemplo en donde obtendremos un listado de Municipios de la base de datos y lo pondremos en un JTable:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//--- Una clase Municipio que necesitaremos en la clase ADO: ---
public class Municipio {
    private int id;
    private String nombre;
 
    public Municipio(int Id, String Nombre) {
        this.id = Id;
        this.nombre = Nombre;
    }
    //-----------------------
    public int getId() {
        return id;
    }
 
    public String getNombre() {
        return nombre;
    }
}
 
//--- En tu clase ADO: Acces Data Object: ---
 
    public LinkedList<Municipio> GetListadoMunicipios(int provId)
    {
        LinkedList<Municipio> ListadoMunicipios = new LinkedList<Municipio>();
        String sql = "select Municipio.Id ,Municipio.Nombre from Municipio where ProvinciaId = ?;";
 
      try {
            PreparedStatement preSt = conexion.prepareStatement(sql);
            preSt .setInt(1, provId);
            preSt.execute();
 
            ResultSet rs = preSt.executeQuery();
            while (rs.next()) //Esta es la forma correcta de recorrer los valores obtenidos de una consulta
            {
                id = rs.getInt(1);
                MpioNombre = rs.getString(2);
                Municipio m = new Municipio(id, MpioNombre); //creamos un objeto de clase Municipio y luego
                ListadoMunicipios.add(m); // lo agregamos al listado que retornaremos
            }
        }
      catch (Exception e){
      }
 
        return ListadoMunicipios;
    }
 
//--- En la interfaz del programa, en donde tiemes tu JTable: ---
 
    public void ListarMunicipios()
    {
        Clase_ADO clase_ADO= new Unidad_ADO();
        DefaultTableModel tabla= (DefaultTableModel) Tabla_Mpios.getModel();
 
          LinkedList<Municipio> ListadoMpios = new LinkedList<Municipio>();
          ListadoMpios = clase_ADO.GetListadoMunicipios(ComboBox_Provincia.getSelectedItem().toString());
          tabla.setNumRows(0);
 
            for(int i =0; i<ListadoMpios.size(); i++)
            {
               Object [] row = {ListadoMpios.get(i).getId(), ListadoMpios.get(i).getNombre()};
               tabla.addRow(row);
            }
 
    }

La ventaja de separar en código en diferentes clases es que creas un par de patrones conocidos como "Alta Cohesión" y "Bajo Acoplamiento": el primero significa asignar a las clases responsabilidades de forma tal que trabajen sobre una misma área de la aplicación, y que no tengan mucha complejidad; y el segundo, es asignar responsabilidades para que las clases se comuniquen con el menor número de clases posible, para de esta forma minimizar las dependencias y se simplifica el código. De esta forma conseguirás un código más legible, reutilizable, acilitarás la documentación, y reducirás el tiempo, además, será más fácil detectar y tratar errores.
Espero haberle ayudado en algo.

Un GigaSaludo!!!
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