Los datos de un jtable no se guardan en la base de datos

Iniciado por JL431, 28 Mayo 2016, 20:49 PM

0 Miembros y 1 Visitante están viendo este tema.

JL431

Estoy haciendo un sistema de abono ya esta todo realizado. Solo que tengo un pequeño detalle, al momento de abonar el sistema hace una resta para que sepa cuanto se adeuda, pero esa resta no se guarda en la base de datos. Todo los demas datos del jtable si se guardan. Quisiera que me apoyaran a revisar mi codigo, la sentencia de ingresar no se si lo estoy poniendo mal.


Alguien que me pueda ayudar porfavor.,,.. Anexo el codigo del boton abonar.

try {

String NºDeVenta = "";

String[] datos = new String[7];

int fila = tbAbono.getSelectedRow();

if (fila == -1) {
JOptionPane.showMessageDialog(null, "SELECCIONE EL PRODUCTO QUE DESEA ABONAR");
} else {

String NVenta = tbAbono.getValueAt(filas, 0).toString();
String UltimoAbo = tbAbono.getValueAt(filas, 1).toString();
String ClaArti = tbAbono.getValueAt(filas, 2).toString();
String Arti = tbAbono.getValueAt(filas, 3).toString();
String TV = tbAbono.getValueAt(filas, 4).toString();
String abo = txtAbono.getText();
String restante= tbAbono.getValueAt(filas, 6).toString();

datos[0] = NVenta;
datos[1] = UltimoAbo;
datos[2] = ClaArti;
datos[3] = Arti;
datos[4] = TV;
datos[5] = abo;
datos[6] = restante;

for (int i = 0; i < tbAbono.getColumnCount(); i++) {
modelo.setValueAt(datos, filas, i);}

restaa();

PreparedStatement pst = cn.prepareStatement("UPDATE abonos SET Fecha='"
+ txtFecha.getText() + "',IdArticulo='"
+ ClaArti + "',NombreArti='"
+ Arti + "',IdCliente='"
+ txtclaveclie.getText() + "',NombreClie='"
+ txtnombre.getText() + "',TotalDeVenta='"
+ TV + "',Restante='"
+ restante + "',Abono='"
+ txtAbono.getText() + "' WHERE IdVenta='" + NVenta + "'");
int n = pst.executeUpdate();
if (n > 0) {
JOptionPane.showMessageDialog(null, "EL ABONO SE REALIZO CORRECTAMENTE");
}

}//1

} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error al moemto de abonar", JOptionPane.ERROR_MESSAGE);
}

llword93ll

Puedes probar a actualizar los datos de la base de datos usando resulset.

Por ejemplo, tenemos la base de datos abonos, donde la clave primaria es cod_abono
Queremos actualizar la fecha del abono con el cod_abono  = 250

Primero debemos tener un objeto Connection conexion;

Creamos un objeto Statement statement = conexion.createStatement();

Mostramos el abono que queremos cambiar filtrando por la clave primaria

Resulset resulset = statement.executeQuery ("select * from abono where cod_abono = " + 250);

posicionamos el puntero sobre el primer resultado (al filtrar por la clave primaria únicamente habrá uno)

resulset.next();

cambiamos por ejemplo la columna fecha_abono, para cambiar una fecha debemos indicar un objeto java.sql.Date, se construye indicando un tiempo en hora linux.

Creamos un objeto GregorianCalendar con la fecha actual
GregorianCalendar fechaHoy = new GregorianCalendar();

Creamos el objeto java.sql.Date que sustituira al de la base de datos.

java.sql.Date nuevaFecha = new Date(fechaHoy.getTimeInMillis() );

Actualizamos la fecha del registro de la base de datos.

resulset.updateDate("fecha_abono", nuevaFecha);

Aplicamos los cambios

resulset.updateRow();

daniela Vega

Un ejemplo utilizando Mysql

//Iniciamos conexion con la base de datos:
ConexionMySQL mysql = new ConexionMySQL();
java.sql.Connection cn= mysql.Conectar();
//aplicamos un modelo a la jtable y obtenemos el numero de filas que tiene
DefaultTableModel dtm = (DefaultTableModel) c3.tblExamenSegmentarioF3.getModel();
filas = dtm.getRowCount();
//luego dependiendo del numero de filas que posea la jtable se cambia la instruccion sql
if(filas==1){
sSQL8="INSERT INTO examen_segmentario (Parte_cuerpo, Variable, "
+ "Observaciones, Numero_hc) VALUES(?, ?, ?, ?)";
} else if(filas==2){
sSQL8="INSERT INTO examen_segmentario (Parte_cuerpo, Variable, "
+ "Observaciones, Numero_hc) VALUES(?, ?, ?, ?), (?, ?, ?, ?)";
}
//luego preparamos la ejecucion de la instruccion sql
try{
Statement st = (Statement) cn.createStatement();
PreparedStatement pre4 = (PreparedStatement) cn.prepareStatement(sSQL8);
//luego creamos un bucle para que vaya asignando a cada campo el valor debido
int r=0;
for (int j = 0; j <= (filas-1); j++) {
pre4.setString(1+r,(String) c3.tblExamenSegmentarioF3.getValueAt(j, 0));
pre4.setString(2+r,(String) c3.tblExamenSegmentarioF3.getValueAt(j, 1));
pre4.setString(3+r, (String) c3.tblExamenSegmentarioF3.getValueAt(j, 2));
pre4.setInt(4+r, numhc);
r=r+4;
}
int q=pre4.executeUpdate();
if ( q>0){
JOptionPane.showMessageDialog(null, mensaje);
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}