martes, 27 de agosto de 2013

Extrae todos los datos de un JTable y guardalos todos en una Tabla MYSQL al mismo tiempo en java


Mas de una ocasión me han preguntado como extraer todos los datos de un JTable y guardar esos datos en una Tabla MySql ,así que para cumplir con esas dudas hoy les enseño como.

Primero que debemos de hacer?
primero que todo tengo que extraer todos los datos insertados en el JTable y almacenar estos datos en un Array en este caso voy a utilizar unArrayListStringque es ideal y mucho mas fácil manejar.
ante que todo tengo que saber cuantasFilas yColumnas tiene el JTable para esto existen los metodos:getRowCount()método que me retorna el numero de filas existente ygetColumnCount() que me retorna el numero de columnas con estos métodos formare dos buclesfor asi podre recorrer filas y columnas por medio del métodogetValueAt(filas ,columnas) que me recibe el numero de filas y el numero de columnas y que me retornara todos los datos que se han recorrido.


for(int i=0; itabla.getRowCount(); i++) //recorro las filas
{
for(int a=0; atabla.getColumnCount(); a++) //recorro las columnas
{
full_datos.add(modelo.getValueAt(i ,a).toString());
}
}


de esta forma tendré almacenado todos los datos dentro delArrayList.este ArrayList tendremos que pasarle los valores a unIterator para luego recorrer los valores y ser almacenados dentro de un vector estos valores tendrán que ser cortados por un control que que hace referencia al numero de columnas de la tabla en MySql0,1,2 una vez que añadimos los valores al Vector tendré que eliminar esos valores delIterator ,y luego procedemos alamacenar los valores del vector a la Tabla MySqlFila porFila
 Vector datosGuardar=new Vector(1);
int cont=-1;
IteratorString nombreIterator = full_datos.iterator();
while(nombreIterator.hasNext()){
cont++;
String elemento = nombreIterator.next();
if(cont=2){
datosGuardar.addElement(elemento);
nombreIterator.remove();
}

}





Ahora necesito verificar la existencia de datos en la Tabla donde tengo que insertar los datos del JTable
esto lo hago con el fin de saber el numero de registros que existen en la Tabla de la base de datos estos deben ser igual al numero de registros del JTable .

try {
ResultSet rs=ConexionBD.Consulta("SELECT * FROM masi_produc");
if(rs.next()){

int num_filas= ConexionBD.CuantasFilas("masi_produc");

if(num_filas==filas){
hay_datos=false;
}
else{

GuardarDatos(columnas);

}
num_datos.setText(num_filas+" de "+filas+" Datos");


}
else{
GuardarDatos(columnas);
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



como podrá ver formo una consulta simple para determinar si existen datos, si no existen o la tabla esta vacía elResultSet.next() me retornara un valorbooleano falso es ay donde insertamos la primera linea proveniente del método GuardarDatos(columnas); , y si existieran datos elResultSet.next() nos retornara el valorbooleano true aquí es donde utilizamos el métodoCuantasFilas(campo) de la claseConexionBD este método me recibe el nombre de la tabla MySql donde voy a guardar los datos y me retorna el numero de filas que posee esa tabla, y cuando el numero de filas sea igual al numero de filas del JTable este dara paso a una variable booleanaque detendra el HILO que llama a este proceso.


public void run()
{

while(main.hay_datos){

main.VerificarDatos();
}

}



les dejo el codigo fuente completo mas la base de datos .


DESCARGAR




,

4 comentarios:

  1. muy bueno, gracias por el aporte.

    ResponderEliminar
  2. Hola, no pude visualizar tu código en netbeans 8 y me urge conocer sobre el tema de los jtable y no hay mucha información al respecto, te agradecería un poco de ayuda en esto.

    Saludos!!

    ResponderEliminar