lunes, 18 de febrero de 2019

Cargar datos a una jTable con datos de Access



Bien lo primero que te tenemos que hacer es crear un jFrame para crear la tabla. Creado el jFrame lo primero que hacemos es colocar un Scroll Pane nos quedara de la siguiente forma:



Bien ahora ingresaremos un Table dentro del Scroll Pane así:



Después de haber creado la tabla debemos borrar su contenido, debemos dar clic derecho en la tabla y seleccionamos la opción Table Contens es la primera que nos sale:


Nos mostrara una ventana y daremos clic en la opción de columnas:


Bien ahora solo tenemos que seleccionar las columnas para poderlas borrar:



Después de haber eliminado todas las columnas de la tabla nos quedara así:



Ahora tenemos que crear el código para eso nos vamos a source e importamos las siguientes Librerías: 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;




Bueno recuerden que ya deben estar conectados con la base de datos Access, Ahora crearemos el modelo de la tabla:

DefaultTableModel tabla = new DefaultTableModel();   //Codigo que crea el modelo de la tabla

Si quieren que la tabla no se pueda editar tendran que añadir el siguiente código:

DefaultTableModel tabla = new DefaultTableModel() {
        @Override
        public boolean isCellEditable(int Fila, int Colum) {
            return false;
        }
    };



Después de haber creado el modelo de la tabla vamos a crear los títulos de los campos para eso crearemos un método llamado  cargarTitulosColumas():

public void cargarTitulosColumas(){
        tabla.addColumn("Nombre");
        tabla.addColumn("Apellido");
        tabla.addColumn("Direccion");
        this.jTable1.setModel(tabla);
    } 



Lo único que nos falta es crear un método para realizar la consulta y llenar la tabla para eso crearemos otro método llamado cargarDatos();

    public void cargarDatos() {
        String datos[] = new String[3];    //Variable que almacena los datos de la consulta
        String sql = "select Id, Nombre, Apellido, Direccion, from Datos";  //Consulta sql
        try {
            ResultSet resultado = sentencia.executeQuery(sql);  //Linea que ejecuta la consulta sql y almacena los datos en resultado

            while (resultado.next()) {                                    //Bucle que recorre la consulta obtenida
                datos[0] = resultado.getString("Nombre");
                datos[1] = resultado.getString("Apellido");
                datos[2] = resultado.getString("Direccion");
                tabla.addRow(datos);
            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error al cargar los Datos\n" + ex);
        }
    }


Ahora solo nos toca llamar a los métodos desde el constructor:




Listo ahora cada vez que ejecutemos el  programa nos cargara los datos de la base de Access.




5 comentarios:

  1. Cargar datos a una jTable con datos de Access - cuando ejecuto despues de aver insertados los codigos _ me sale "error al cargar datos" una solucion

    GRACIAS

    ResponderEliminar
  2. Buenas, tardes. Ejecuto este código y aún no funciona. Mi correo es rafa80cb@gmail.com. Al ejecutar el código obtengo lo siguiente:

    Error al cargar los datos
    net.ucanaccess.jdbc.UcanaccessSQLException:UCAEx::: 5.0.0-SNAPSHOT discrepancia en el número de filas contadas.

    MI CÓDIGO:



    public class JFimportar extends javax.swing.JFrame {

    //Creando las variables conexion y sentencia de manera global. De esta forma nos permitirá utilizarlas en todo el proyecto:
    Connection conexion;
    Statement sentencia;

    //Ahora crearemos el modelo de la tabla:
    DefaultTableModel tabla = new DefaultTableModel() //Código que crea el modelo de la tabla.
    //DefaultTableModel table = new DefaultTableModel(); // Si desea que se pueda editar la tabla, se elimina el código de abajo desde línea 32 ({ @Override...) a la 36 (...};) y se activa esta línea retirando los //
    { @Override
    public boolean isCellEditable(int Fila, int Colum) {
    return false;
    }
    };

    /**
    * Creates new form JFimportar
    */
    public JFimportar() {
    initComponents();
    conectatarBaseDatos();
    cargarTitulosColumas();
    cargarDatos();
    }

    //Método llamado conectatarBaseDatos(), para crear la conexión.
    public void conectatarBaseDatos() {
    try {
    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); //Linea que carga el driver
    } catch (ClassNotFoundException e) {
    JOptionPane.showMessageDialog(null, "Error al cargar driver.");
    }
    try {
    conexion = DriverManager.getConnection("jdbc:ucanaccess://D:\\TRADUCCIÓN - RAFA\\PROYECTOS JAVA\\PruebaConexionBD_base_de_datos\\BDprueba.accdb"); //En esta parte tenemos que cambiar la ruta en la que se encuentra nuestra base de datos.
    } catch (SQLException e) {
    JOptionPane.showMessageDialog(null, "Error en la dirección de la base de datos");
    }
    try {
    sentencia = conexion.createStatement();
    } catch (SQLException e) {
    JOptionPane.showMessageDialog(null, "Error al crear la conexión con la base de datos");
    }
    }

    //Después de haber creado el modelo de la tabla vamos a crear los títulos de los campos para eso crearemos un método llamado cargarTitulosColumas():
    public void cargarTitulosColumas(){
    tabla.addColumn("Nombre");
    tabla.addColumn("Apellido");
    tabla.addColumn("Rut");
    tabla.addColumn("Telefono");
    tabla.addColumn("Edad");
    this.jTable1.setModel(tabla);

    }

    public void cargarDatos() {
    String datos[] = new String[3]; //Variable que almacena los datos de la consulta
    String sql = "Select (Nombre, Apellido, Rut, Telefono, Edad) from Prueba"; //Consulta sql
    try {
    ResultSet resultado = sentencia.executeQuery(sql); //Linea que ejecuta la consulta sql y almacena los datos en resultado.
    while (resultado.next()) { //Bucle que recorre la consulta obtenida
    datos[0] = resultado.getString("Nombre");
    datos[1] = resultado.getString("Apellido");
    datos[2] = resultado.getString("Rut");
    datos[3] = resultado.getString("Telefono");
    datos[4] = resultado.getString("Edad");
    tabla.addRow(datos);

    }
    } catch (SQLException ex) {
    JOptionPane.showMessageDialog(null, "Error al cargar los datos\n" + ex);
    }
    }

    /**
    * This method is called from within the constructor to initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */

    ResponderEliminar
    Respuestas
    1. tu String debe ser con valor a 5 por que tienes valores desde el 0 al 4


      public void cargarDatos() {
      String datos[] = new String[5]; //Variable que almacena los datos de la consulta
      String sql = "Select (Nombre, Apellido, Rut, Telefono, Edad) from Prueba"; //Consulta sql
      try {
      ResultSet resultado = sentencia.executeQuery(sql); //Linea que ejecuta la consulta sql y almacena los datos en resultado.
      while (resultado.next()) { //Bucle que recorre la consulta obtenida
      datos[0] = resultado.getString("Nombre");
      datos[1] = resultado.getString("Apellido");
      datos[2] = resultado.getString("Rut");
      datos[3] = resultado.getString("Telefono");
      datos[4] = resultado.getString("Edad");
      tabla.addRow(datos);

      }

      Eliminar
  3. Anonimo a mi me paso lo mismo que a vos, lo que hice fue colocar bien el nombre de la carpeta en el C y que coincida en netbeans, el codigo funciona bien. Saludos

    ResponderEliminar

Cargar datos a una jTable con datos de Access

Bien lo primero que te tenemos que hacer es crear un jFrame para crear la tabla. Creado el jFrame lo primero que hacemos es coloc...