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

Error al grabar datos en mysql

Estas en el tema de Error al grabar datos en mysql en el foro de Java en Foros del Web. Este es mi código para insertar. public boolean insertar(vtutor dts) { sSQL = "insert into persona (nombre,apellido,num_documento,fecha_nacimiento,ed ad,domicilio,barrio,localidad,telefono_fijo,celula r)" + "values (?,?,?,?,?,?,?,?,?,?)"; sSQL2 = "insert ...
  #1 (permalink)  
Antiguo 05/02/2016, 19:36
 
Fecha de Ingreso: febrero-2016
Ubicación: Tafi Viejo-Tucumán
Mensajes: 6
Antigüedad: 8 años, 2 meses
Puntos: 0
Error al grabar datos en mysql

Este es mi código para insertar.


public boolean insertar(vtutor dts) {
sSQL = "insert into persona (nombre,apellido,num_documento,fecha_nacimiento,ed ad,domicilio,barrio,localidad,telefono_fijo,celula r)"
+ "values (?,?,?,?,?,?,?,?,?,?)";
sSQL2 = "insert into tutor (idpersona,telefono_fijo,celular)"
+ "values ((select idpersona from persona order by idpersona desc limit 1),?)";
try {

PreparedStatement pst = cn.prepareStatement(sSQL);
PreparedStatement pst2 = cn.prepareStatement(sSQL2);

pst.setString(1, dts.getNombre());
pst.setString(2, dts.getApellido());
pst.setString(3, dts.getNum_documento());
pst.setDate(4, dts.getFecha_nacimiento());
pst.setString(5, dts.getEdad());
pst.setString(6, dts.getDomicilio());
pst.setString(7, dts.getBarrio());
pst.setString(8, dts.getLocalidad());

pst2.setString(1, dts.getTelefono_fijo());
pst2.setString(2, dts.getCelular());

int n = pst.executeUpdate();
if (n != 0) {
int n2 = pst2.executeUpdate();

if (n2 != 0) {
return true;

} else {
return false;
}

} else {
return false;
}

} catch (Exception e) {
JOptionPane.showConfirmDialog(null, e);
return false;
}
}

me pueden ayudar este es el error que me aparece:

parameter index out of range(2>numbers of parameters, which is 1)

cuando quiero guardar un tutor que herada atributos de la clase persona.
  #2 (permalink)  
Antiguo 05/02/2016, 20:22
inazense
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al grabar datos en mysql

Pues así a simple vista en la consulta estás preparando la inserción de diez campos, pero en el PrepareStatement pst solo añades ocho. Te faltarían dos campos más que cubrir
  #3 (permalink)  
Antiguo 05/02/2016, 20:54
 
Fecha de Ingreso: febrero-2016
Ubicación: Tafi Viejo-Tucumán
Mensajes: 6
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Error al grabar datos en mysql

pst.setString(1, dts.getNombre());
pst.setString(2, dts.getApellido());
pst.setString(3, dts.getNum_documento());
pst.setDate(4, dts.getFecha_nacimiento());
pst.setString(5, dts.getEdad());
pst.setString(6, dts.getDomicilio());
pst.setString(7, dts.getBarrio());
pst.setString(8, dts.getLocalidad());

este pst es de la clase persona que cree

pst2.setString(1, dts.getTelefono_fijo());
pst2.setString(2, dts.getCelular());

y pst2 de la clase tutor que hereda los atributos de persona.

decis que complete todo con los atributos de tutor tambien?
  #4 (permalink)  
Antiguo 05/02/2016, 21:09
 
Fecha de Ingreso: febrero-2016
Ubicación: Tafi Viejo-Tucumán
Mensajes: 6
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Error al grabar datos en mysql

ya está ya lo solucioné

sSQL = "insert into persona (nombre,apellido,num_documento,fecha_nacimiento,ed ad,domicilio,barrio,localidad,telefono_fijo,celula r)"
+ "values (?,?,?,?,?,?,?,?,?,?)";
sSQL2 = "insert into tutor (idpersona,telefono_fijo,celular)"
+ "values ((select idpersona from persona order by idpersona desc limit 1),?)";

había ingresado mal las columnas, así quedó

sSQL = "insert into persona (nombre,apellido,num_documento,fecha_nacimiento,ed ad,domicilio,barrio,localidad)"
+ "values (?,?,?,?,?,?,?,?)";
sSQL2 = "insert into tutor (idpersona,telefono_fijo,celular)"
+ "values ((select idpersona from persona order by idpersona desc limit 1),?,?)";

gracias por el tiempo.

Etiquetas: clase, mysql, sql
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 22:32.