Java - MySQL

   
Vista:
Imágen de perfil de Jemel

MySQL

Publicado por Jemel (15 intervenciones) el 27/05/2011 19:13:53
Saludos. Estoy trabajando con java y MySQL. Mi problema esta en que muestro datos de una tabla de mi BD en un JTable y quiero agregar datos adicionales a cada registro mostrado en el JTable. Lo que quiero hacer es que los datos agregados se guarden en la tabla que estoy mostrando.

El código que estoy usando es este. No guarda los datos sino que me da el mensaje de error del catch "Error al guardar los datos".

Gracias de antemano

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
int filesel = tblistado.getSelectedRow();
int reply;
DefaultTableModel l = (DefaultTableModel) tblistado.getModel();
int filas = l.getRowCount();
String cedula = "", p1l1 ="", p2l1 = "", proml1 ="", p3l1="", pp3l1="",defl1="", p1l2 ="", p2l2= "", proml2 ="", p3l2="", pp3l2="",defl2="", p1l3 ="", p2l3 = "", proml3 ="", p3l3="", pp3l3="",defl3="";
String tabla = cmbnp.getSelectedItem() + "_" + cmbmp.getSelectedItem() + "_" + cmbsp.getSelectedItem();
for (int j = 0; j<filas ; j++)
{
cedula = (String) tblistado.getValueAt(filesel, 0);
p1l1 = (String) tblistado.getValueAt(filesel, 3);
p2l1 = (String) tblistado.getValueAt(filesel, 4);
proml1 = (String) tblistado.getValueAt(filesel, 5);
p3l1 = (String) tblistado.getValueAt(filesel, 6);
pp3l1 = (String) tblistado.getValueAt(filesel, 7);
defl1 = (String) tblistado.getValueAt(filesel, 8);
p1l2 = (String) tblistado.getValueAt(filesel, 9);
p2l2 = (String) tblistado.getValueAt(filesel, 10);
proml2 = (String) tblistado.getValueAt(filesel, 11);
p3l2 = (String) tblistado.getValueAt(filesel, 12);
pp3l2 = (String) tblistado.getValueAt(filesel, 13);
defl2 = (String) tblistado.getValueAt(filesel, 14);
p1l3 = (String) tblistado.getValueAt(filesel, 15);
p2l3 = (String) tblistado.getValueAt(filesel, 16);
proml3 = (String) tblistado.getValueAt(filesel, 17);
p3l3 = (String) tblistado.getValueAt(filesel, 18);
pp3l3 = (String) tblistado.getValueAt(filesel, 19);
defl3 = (String) tblistado.getValueAt(filesel, 20);
}
try
{
String msql = "select *from `" + tabla + "` where cedula = '" + cedula + "'";
try
{
if (filesel == -1)
JOptionPane.showMessageDialog(this, "Debe seleccionar todo");
else
{
ms = "update `" + tabla + "` set p1l1 = '" + p1l1 + "', p2l1 = '" + p2l1 + "', proml1 ='" + proml1 + "', p3l1 ='" + p3l1 + "', pp3l1 = '" + pp3l1 + "', defl1 = '" + defl1 + "', p1l2 = '" + p1l2 + "', p2l2 = '" + p2l2 + "', proml2 ='" + proml2 + "', p3l2 ='" + p3l2 + "', pp3l2 = '" + pp3l2 + "', defl2 = '" + defl2 + "', p1l3 = '" + p1l3 + "', p2l3 = '" + p2l3 + "', proml3 ='" + proml3 + "', p3l3 ='" + p3l3 + "', pp3l3 = '" + pp3l3 + "', defl3 = '" + defl3 + "' where cedula = '" + cedula + "'";
sql = conexion.createStatement();
sql.executeUpdate(ms);
sql.close();
JOptionPane.showMessageDialog(this, "Notas Registradas");
}
}
catch (Exception ex)
{
JOptionPane.showMessageDialog(this, "Error al guardar los datos");
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(this, "Error de conexion");
}
}//GEN-LAST:event_jButton1ActionPerformed
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

MySQL

Publicado por Cristian (31 intervenciones) el 29/05/2011 06:11:37
Compadre como buen programador al igual que el comentario anterior le dare los siguientes consejos:

1.- Favor de comentar los (as) clases que no te funcionen.
2.- SIEMPRE trabaja con try { y catch { al empezar a ingresar datos, ya que este puede evitar que se te caiga el programa o decirte en que parte del programa se cae y es mas facil descubrir el error.
3.- TE RECOMIENDO A EMPEZAR A PROGRAMAR ORIENTADO A OBJETO. es mas facil de aprender y mucho mas metodico de como lo estas haciendo
4.- si estas trabajando con interfaz grafica seria algo asi:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
try
{

this.tblBuscarJugApe.removeAll();
//creo una clase base clsBd donde tengo el metodo de ingresar datos a una clase
clsBd objBd = new clsBd();
// creo una variable de tipo string apellido Jugador y le quito los espacios que pueda tener en blanco
String apJugador = this.jIntBusJugApeApJugador.getText().trim();
// creo el default table model
DefaultTableModel dtm = new DefaultTableModel();
// agrego los datos que van a tener en la tabla
dtm.addColumn("ID");
dtm.addColumn("Nombre");
dtm.addColumn("Apellido");
dtm.addColumn("Edad");
// creo un arraylist Jugadores que es de donde obtendre los datos de los jugadores de mi base de datos
ArrayList arrJugadores = objBd.getJugadorPorApellido(apJugador);
Iterator itJugadores = arrJugadores.iterator();
// condiciono el array y lo recorro
while ( itJugadores.hasNext() )
{
clsJugador objJugador = (clsJugador) itJugadores.next();
// creo un objeto para poder almacenar los datos de los jugadores en un array objeto, este array debe contener la cantidad de datos que vas a crear en la base de datos, en mi caso son solo 4
Object[] arrObj = new Object[4];

arrObj[0] = objJugador.getIdJugador();
arrObj[1] = objJugador.getNmJugador();
arrObj[2] = objJugador.getApJugador();
arrObj[3] = objJugador.getVlEdad();

dtm.addRow(arrObj);
}
// muestro en la tabla los datos que hay en la base de datos
this.tblBuscarJugApe.setModel(dtm);
}
catch( Exception ex )
{

}

eso un tipo de buscar los datos y puedes ocupar esto mismo para que busque y agregue datos, ahora solo te hace falta agregar un boton de agregar y condicionado así:

try
{
// creo una objBd ( mi clase donde tengo programado mis metodos que se llama clsBd )
clsBd objBd = new clsBd();
// creo un objeto jugador que es donde tengo todos los mutadores y constructores para poder ingresar los datos
clsJugador objJugador = new clsJugador();
// despues ingreso los datos de los jugadores a travez de textfield
//convierto el textfelds String a INT para asi almacenarlo en la base de datos ( Integer.parseInt(
//this.jIntIngrJugIdJugador )y despues llamo al mutador y obtengo los datos y le quito los espacios con trim(); )
objJugador.setIdJugador( Integer.parseInt( this.jIntIngrJugIdJugador.getText().trim() ) );
objJugador.setNmJugador( this.jIntIngJugNmJugador.getText().trim() );
objJugador.setApJugador( this.jIntIngJugApJugador.getText().trim() );
objJugador.setVlEdad( Integer.parseInt( this.jIntIngJugVlEdad.getText().trim() ) );
// guardo todos estos datos en el objJugador que cree mas arriba.
objBd.setJugador(objJugador);
}
//creo las excepciones
catch( Exception ex )
{

}
finally
{
// tengo un metodo llamado setLimpiarDatos que me sirve cuando ingreso los datos se limpien los //campos donde he ingresado mis datos

this.setLimpiarDatos();
}
}
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

MySQL

Publicado por Luis (83 intervenciones) el 27/05/2011 22:43:44
Te recomiendo que cuando estes desarrollando y aun no te funcione el código de forma definitiva, es mejor que comentes el codigo JOptionPane.showMessageDialog(this, "Error al guardar los datos"); y hagas un ex.printStacktrace(); ya que te da un error mucho más especifico y podrás solucionar tus problemas mas facilmente.
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
Imágen de perfil de Jemel

MySQL

Publicado por Jemel (15 intervenciones) el 30/05/2011 17:51:43
Ok. Gracias. Voy a probar. Si trabajo con try y catch. Solo que no coloque el código completo.
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