Que tal camaradas en este post les dejare un ejemplo de como leer una tabla en MySQL a travez de un procedimiento almacenado y poner los datos en un JTable que es el equivalente al grid en las IDE de Microsoft o las mas parecida que encontre.

En primera necesitaremos del procedimiento almacenado el cual les dejo aquí mismo


DROP PROCEDURE IF EXISTS `PA_LeeClientes`$$
CREATE PROCEDURE `PA_LeeClientes`(IN `desde` BIGINT, IN `cuantos` BIGINT, IN `Busqueda` VARCHAR(200))
BEGIN

SELECT right(`Clientes`.`idCliente`,5) as idCliente,
`Clientes`.`Nombres`,
`Clientes`.`Apellidos`,
`Clientes`.`Direccion`,
`Clientes`.`Ciudad`,
`Clientes`.`Telefono`,
`Clientes`.`RFC`,
`Clientes`.`FechaNacimiento`,
`Clientes`.`Estado`,
`Clientes`.`Municipio`,
`Clientes`.`CodigoPostal`
FROM `Clientes`
where Nombres LIKE CONCAT('%',Busqueda,'%')
or Nombres LIKE CONCAT('%',Busqueda,'%')
or Apellidos LIKE CONCAT('%',Busqueda,'%')
or Direccion LIKE CONCAT('%',Busqueda,'%')
or Ciudad LIKE CONCAT('%',Busqueda,'%')
or Telefono LIKE CONCAT('%',Busqueda,'%')
or RFC LIKE CONCAT('%',Busqueda,'%')
or Estado LIKE CONCAT('%',Busqueda,'%')
limit desde,cuantos;

Ahora un método que necesitaremos es la que esta el la clase “Clientes”

public void leerClientes(long intDesde ,long intCuantos,DefaultTableModel tablaClientes,String strBusqueda ){
        String strConsulta;
        String datos[]=new String [4];
      
        strConsulta="call PA_LeeClientes("+intDesde+","+intCuantos+",'"+strBusqueda+"');";
      
        try{
         
         ps= con.conectado().prepareStatement(strConsulta);
         res = ps.executeQuery();
         
         while(res.next()){
              //System.out.println(res.getString("Nombres"));
              datos[0]=res.getString("IdCliente");
              datos[1]=res.getString("Nombres");
              datos[2]=res.getString("Apellidos");
              datos[3]=res.getString("RFC");
              
              tablaClientes.addRow(datos);
         }
         res.close();
          }catch(SQLException e){
         System.out.println(e);
        
    }
        
}

Y por si hiciera falta la clase de conexión a la base de datos MySQL


Ahora vemos el método que forma el JTable y le asigna los datos

   public void defineTablaClientes(String strBusqueda,long DesdeHoja){
        
        long lngRegistros=1;
        long lngDesdeRegistro;
        
        //DEFINIMOS LA TABLA MODELO
        DefaultTableModel tablaClientes = new DefaultTableModel();
        
        //LE AGREGAMOS EL TITULO DE LAS COLUMNAS DE LA TABLA EN UN ARREGLO
        String strTitulos[]={"ID CLIENTE","NOMBRE","APELLIDO","RFC"};
        
        //LE ASIGNAMOS LAS COLUMNAS AL MODELO CON LA CADENA DE ARRIBA
        tablaClientes.setColumnIdentifiers(strTitulos);
        
        //LE ASIGNAMOS EL MODELO DE ARRIBA AL JTABLE 
        this.JTabClientes.setModel(tablaClientes);
        
                    //AHORA A LEER LOS DATOS
        
        //ASIGNAMOS CUANTOS REGISTROS POR HOJA TRAEREMOS
        lngRegistros=(Long.valueOf(this.txtNumReg.getText()));
        
        //ASIGNAMOS DESDE QUE REGISTRO TRAERA LA CONSULTA SQL
        lngDesdeRegistro=(DesdeHoja*lngRegistros)-lngRegistros;
        
        //INSTANCEAMOS LA CLASE CLIENTE
        control_cliente classCliente= new control_cliente();
        
        //LEEMOS LA CLASE CLIENTE MANDANDOLE LOS PARAMETROS
        classCliente.leerClientes(lngDesdeRegistro, (Long.valueOf(this.txtNumReg.getText())),tablaClientes,strBusqueda);
        
        //LE PONEMOS EL RESULTADO DE LA CONSULA AL JTABLE
        this.JTabClientes.setModel(tablaClientes);
        
        //ASIGNAMOS LOS VALORES A LA PAGINACION
        lngRegistros = classCliente.leerCuantos("");
        lngNumPaginas= (lngRegistros/ (Long.valueOf( this.txtNumReg.getText())))+1;
        this.jlblTotalPaginas.setText(" De " + ( lngNumPaginas));
        
    }

Y de esta manera sencilla se agregan los valores a la celda, es muy fácil verdad.

Bien camaradas espero que les sirva y saludos

Anuncios