Java Method to Load Race Data from a Database into a List
Método llenarLista()
Este método carga las carreras desde la base de datos y las agrega a una lista, junto con las posiciones de cada carrera y los puntos de los pilotos.
private void llenarLista() {
try {
modeloLista = (DefaultListModel) lista.getModel();
Statement sentenciaCarreras = conexion.createStatement();
String sql = "SELECT * FROM carreras ORDER BY ncarrera;";
java.sql.ResultSet rsCarreras = sentenciaCarreras.executeQuery(sql);
System.out.println(sql);
int nCarrera;
java.util.Date fecha; /* PARA DIFERENCIAR java.util DE java.sql */
String nombre;
String circuito;
double km;
int nVueltas;
javax.swing.ImageIcon mapa;
while (rsCarreras.next()) {
nCarrera = rsCarreras.getInt("ncarrera");
fecha = rsCarreras.getDate("fecha");
nombre = rsCarreras.getString("nombre");
circuito = rsCarreras.getString("circuito");
km = rsCarreras.getDouble("km");
nVueltas = rsCarreras.getInt("nvueltas");
byte[] bMapa = rsCarreras.getBytes("mapa2");
mapa = new ImageIcon(bMapa);
Carrera c = new Carrera(nCarrera, fecha, nombre, circuito, km, nVueltas, mapa);
modeloLista.addElement(c);
Statement sentenciaPosiciones = conexion.createStatement();
String sql2 = "SELECT * FROM posiciones WHERE ncarrera=" + nCarrera + " ORDER BY posicion;";
rsPosiciones = sentenciaPosiciones.executeQuery(sql2);
ArrayList posicionesP = new ArrayList<>();
while (rsPosiciones.next()) {
int nCarreras = rsPosiciones.getInt("ncarrera");
int dorsal = rsPosiciones.getInt("dorsal");
int posicion = rsPosiciones.getInt("posicion");
/* OBJETO PILOTO */
Piloto pil = pilotos.get(dorsal - 1);
/* OBJETO POSICION */
Posicion pos = new Posicion(posicion, pil);
int puntos = pil.getPuntos() + pos.getPuntos();
pil.setPuntos(puntos);
posicionesP.add(pos);
}
c.setPosiciones(posicionesP);
carreras.add(c);
}
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}