Пожалуйста, я хотел бы показать данные таблицы в 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
Прежде всего у него, должно быть, есть класс типа 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);