Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema con tablas

Buenas! Tengo un problema con este programa. Cuando intento ingresar datos en el sector viajes que es una tabla de relación entre la tabla camión y destino me salta un error. Así mismo, cuando hago cualquier consulta me salta un error, a no ser que consulte un solo dato de una única tabla D: Paso el código.

En ingresar en viajes:

private void btingresarviajeActionPerformed(java.awt.event.ActionEvent evt) {
String query = "insert into viaje(matricula,codigo,fecha,numero) values (?,?,?,?)";
try {
PreparedStatement ps = conn.prepareStatement(query);
ps.setInt(1, Integer.parseInt(this.txtmatricula.getText()));//tipo String en tabla
ps.setInt(2, Integer.parseInt(this.txtcodigo.getText()));
ps.setString(3, this.txtfecha.getText());
ps.setInt(4, Integer.parseInt(this.txtnum.getText()));//tipo int en tabla

int r = ps.executeUpdate();

if(r>0){
System.out.println("exito ");
conn.commit(); //confirma camnbios guarda BD
} else {
conn.rollback();//desase
}

} catch (SQLException ex) {
if(conn != null) try {
conn.rollback();
} catch (SQLException ex1) {
Logger.getLogger(ingresar.class.getName()).log(Level.SEVERE, null, ex1);
}
Logger.getLogger(ingresar.class.getName()).log(Level.SEVERE, null, ex);
}
}


Consultas:
1- private void btconsulta2ActionPerformed(java.awt.event.ActionEvent evt) {
String query="select nombre,km from destino where destino.pais='argentina' and destino.km>1000 and destino.km<1500;";
try {
PreparedStatement ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery();
while(rs.next()){
String tt = rs.getString("Destinos en argentina entre los 1000 y 1500 km");

System.out.println("Destinos en argentina entre los 1000 y 1500 km: " + tt);
}
}catch (SQLException ex) {
if(conn != null) try {
conn.rollback();
} catch (SQLException ex1) {
Logger.getLogger(ingresar.class.getName()).log(Level.SEVERE, null, ex1);
}
Logger.getLogger(ingresar.class.getName()).log(Level.SEVERE, null, ex);
}

}

2- private void btconsulta3ActionPerformed(java.awt.event.ActionEvent evt) {
String query="select pais,count(numero) from destino, viaje where destino.codigo=viaje.codigo group by(pais);";
try {
PreparedStatement ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery();
while(rs.next()){
String bb = rs.getString("pais,numero");

System.out.println("Viajes realizados a cada pais " + bb);
}
}catch (SQLException ex) {
if(conn != null) try {
conn.rollback();
} catch (SQLException ex1) {
Logger.getLogger(ingresar.class.getName()).log(Level.SEVERE, null, ex1);
}
Logger.getLogger(ingresar.class.getName()).log(Level.SEVERE, null, ex);
}
}

3- private void btconsulta5ActionPerformed(java.awt.event.ActionEvent evt) {
// promedio de distancias existentes entre los destinos de cada pais
String query="select nombre,pais,avg(km)from destino group by(nombre)";
try {
PreparedStatement ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery();
while(rs.next()){
String jja = rs.getString("nombre,pais,km");

System.out.println("Promedio de distancias existentes entre los destinos de cada pais " + jja);
}
}catch (SQLException ex) {
if(conn != null) try {
conn.rollback();
} catch (SQLException ex1) {
Logger.getLogger(ingresar.class.getName()).log(Level.SEVERE, null, ex1);
}
Logger.getLogger(ingresar.class.getName()).log(Level.SEVERE, null, ex);
}
}

Alguna ayuda? Gracias de antemano!

noviembre 6, 2014 | Unregistered CommenterCaim

Hola caim. Revisa la forma en la que obtenes los datos desde el resultset. Si no vi mal estas tratando de recuperar mas de una columna en la misma sentencia y la forma correcta seria:

String col1 = rs.getString("nombreColumna1");
String col2 = rs.getString("nombreColumna2");
.......

Espero que te sirva. Saludos.

noviembre 6, 2014 | Unregistered Commenteralaguslaz