Показать данные из таблицы Mysql в JTable из Java NetBeans

Пожалуйста, я хотел бы показать данные таблицы в MySQL в JTable, нажав JButton с именем btnActualizar в моей форме.

  • У меня есть класс под названием ConexionDB для подключения к моей БД со следующим кодом:
public class ConexionDB {
    public static String url = "jdbc:mysql://localhost/mrp";
    public static String usuario = "root";
    public static String contraseña = "";
    public static String clase = "com.mysql.jdbc.Driver";

    public static Connection conectar() {
        Connection conexion = null;
        try {
            Class.forName(clase);
            conexion = (Connection) DriverManager.getConnection(url, usuario, contraseña);
            System.out.println("Conexion Correcta!!");
        } catch (ClassNotFoundException | SQLException e) {
            System.out.println(e);
        }
        return conexion;
    }
}
  • Таблица в БД " mrp "называется Nivel2 и имеет 3 столбца: Nombre(varchar) costo(int) stock(int)

  • JTable в моей форме называется jtNivel2

0
задан 29.11.2019, 18:31
1 ответ

Прежде всего у него, должно быть, есть класс типа Nivel2, со всеми Вашими соответствующими признаками, чтобы мочь использовать ее mГЎs вперед:

public class Nivel2{
    private String nombre;
    private int costo;
    private int stock;

    public Nivel2(nombre, costo, stock) {
        this.nombre = nombre;
        this.costo = costo;
        this.stock = stock;
    }

    //Getters y Setters
}

Позже, должно быть, создает один mГ©todo, что позволил мочь приносить ее informaciГіn из таблицы Nivel2, и вооружать один ArrayList, у которого было бы все то, что habГ - в в вышеупомянутой таблице:

Сначала для себя импортирует класс Nivel2

import Nivel2; // se llama a la clase de tipo Nivel2, que declaramos más arriba

Позже считалось mГ©todo, что он наполняет array типа Nivel2

public static ArrayList<Nivel2> listar() throws Exception {

        private ArrayList<Nivel2> alNivel2 = new ArrayList<Nivel2>;

        con = new ConexionDB().conectar(); //Conecta con la DB
        try {
            st = con.createStatement();
            query = "select * from Nivel2"; //selecciona todo de la tabla Nivel2
            rs = st.executeQuery(query); // ejecuta la query
            //Se declaran las variables que tomaran cada uno de los datos que devuelve la tabla
            String nombre;
            int costo;
            int stock;
            //Se limpia el array list de tipo Nivel2
            alNivel2.removeAll(alNivel2);
            //Obtiene los datos uno por uno y lo da a la variable correspondiente
            while (rs.next()) {
                nombre = rs.getString("nombre");
                costo = rs.getInt("costo");
                stock = rs.getInt("stock");  
                //Se crea una nueva instancia y se agrega al array
                alNivel2.add(new Nivel2(nombre, costo, stock);
            }
            //Por si hubiera un error con la DB
        } catch (SQLException sqle) {
            System.out.println("Error SQL....." + sqle);
        }
        con.close(); // se cierra la conexión
        return alNivel2; // retorna el array completo
    }

, Так как мы имеем как можение, она извлекает весь informaciГіn из базы данных, переходят, чтобы наполнять JTable счастьем informaciГіn:

Сначала

//se crea un modelo que será usado para rellenar el JTale
DefaultTableModel modelo = new DefaultTableModel();

Потом поверил mГ©todo внутри cГіdigo view, где estГЎ совсем она lГіgica окон, которые он может наполнять JTable

public void llenarJTableNivel2(JTable jtNivel2)throws Exception{
        try{
            //Se crea un array para llenar las columnas de la tabla
            ArrayList<Object> nombreColumna = new ArrayList<>();
            nombreColumna.removeAll(nombreColumna);
            nombreColumna.add("Nombre");
            nombreColumna.add("Costo");
            nombreColumna.add("Stock");

            //se rellena con cada una de las columnas al array
            for(Object columna : nombreColumna){
                modelo.addColumn(columna);
            }
            //Se rellena con el array de listar Nivel2       
            //Nivel2 controlador, hace referencia a la clase donde se creó el método listar  
            for(Nivel2 DatoNivel : Nivel2Controlador.listar()){
                //Como dato nivel es de nivo nivel2, este puede acceder a los métodos get y set
                modelo.addRow(new Object[]{DatoNivel.getNombre(),
                                           DatoNivel.getCosto(),
                                           DatoNivel.getStock(),
                                          }); 
            }
            //se actualiza la Tabla
            jtNivel2.setModel(modelo);
        //en caso de error
        }catch(Exception sqle){
            JOptionPane.showMessageDialog(null,"Error llenar JTable " + sqle);
        }
    }

Уже внутри mГ©todo botГіn только он, должно быть, звонит в в mГ©todo, и перемещать из-за parГЎmetro имя JTable, которые ты создал ранее:

llenarJTableNivel2(jtNivel2);
1
ответ дан 01.12.2019, 10:39