Antes de fazer os campos receberem o valor do BD, as operações de CRUD funcionavam, no fim colarei o erro, segue mas classes e o BD:
Classe do tipo Modelo:
package com.login.model;
public class ModelUser {
private int id;
private String nome;
private String login;
private String senha;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
@Override
public String toString() {
return "ModelUser{" + "id=" + id + ", nome=" + nome + ", login=" + login + ", senha=" + senha + '}';
}
}
############################################
Interface Dao:
package com.login.dao;
import com.login.model.ModelUser;
import java.util.List;
public interface InterfaceDaoUser {
public void novo(ModelUser modelUser);
public void excluir(ModelUser modelUser);
public void alterar(ModelUser modelUser);
public List<ModelUser> read();
public String getSqlCliente();
}
###################################
Dao
package com.login.dao;
import com.login.model.ModelUser;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
public class DaoUser implements InterfaceDaoUser {
public void novo(ModelUser modelUser) {
Connection con = ConnectionFactory.getConnnection();
PreparedStatement stmt = null;
String sql = "INSERT INTO tbl_login (nome, login, senha) VALUES (?, ?, ?) ";
try {
stmt = con.prepareStatement(sql);
stmt.setString(1, modelUser.getNome());
stmt.setString(2, modelUser.getLogin());
stmt.setString(3, modelUser.getSenha());
stmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Salvo com sucesso!");
con.close();
} catch (SQLException u) {
throw new RuntimeException(u);
} finally {
ConnectionFactory.closeConnection(con, stmt);
}
}//fim inserir
public void excluir(ModelUser modelUser) {
Connection con = ConnectionFactory.getConnnection();
PreparedStatement stmt = null;
String sql = "DELETE FROM tbl_login WHERE id=?";
try {
stmt = con.prepareStatement(sql);
stmt.setInt(1, modelUser.getId());
stmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Excluido com sucesso!");
con.close();
} catch (SQLException u) {
throw new RuntimeException(u);
}
}// fim excluir
public void alterar(ModelUser modelUser) {
Connection con = ConnectionFactory.getConnnection();
PreparedStatement stmt = null;
String sql = "UPDATE tbl_login SET nome=?, login=?, senha=? WHERE id=? ";
try {
stmt = con.prepareStatement(sql);
stmt.setString(1, modelUser.getNome());
stmt.setString(2, modelUser.getLogin());
stmt.setString(3, modelUser.getSenha());
stmt.setInt(4, modelUser.getId());
stmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Excluido com sucesso!");
con.close();
} catch (SQLException u) {
throw new RuntimeException(u);
} finally {
ConnectionFactory.closeConnection(con, stmt);
}
}//fim alterar
public List<ModelUser> read() {
Connection con = ConnectionFactory.getConnnection();
PreparedStatement stmt = null;
ResultSet rs = null;
List<ModelUser> modelUsers = new ArrayList<>();
try {
stmt = con.prepareStatement("SELECT * FROM tbl_login");
rs = stmt.executeQuery();
while (rs.next()) {
ModelUser mUser = new ModelUser();
mUser.setId(rs.getInt("id"));
mUser.setNome(rs.getString("nome"));
mUser.setLogin(rs.getString("login"));
mUser.setSenha(rs.getString("senha"));
modelUsers.add(mUser);
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao ler lista\nErro :" + ex);
} finally {
ConnectionFactory.closeConnection(con, stmt, rs);
}
return modelUsers;
}// end read
public String getSqlCliente(){
return "SELECT * FROM tbl_login ";
}
}//end DaoUser
#########################################
Conexão
package com.login.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ConnectionFactory {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/db_login";
private static final String USER = "root";
private static final String PASS = "123";
public static Connection getConnnection(){
try {
Class.forName(DRIVER);
return DriverManager.getConnection(URL, USER, PASS);
} catch (ClassNotFoundException | SQLException ex) {
throw new RuntimeException("Erro na conexao: ",ex );
}
}
public static void closeConnection(Connection con){
try {
if(con !=null){
con.close();
}
} catch (SQLException ex) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void closeConnection(Connection con, PreparedStatement stmt){
closeConnection(con);
try {
if(stmt!=null){
stmt.close();
}
} catch (SQLException ex) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void closeConnection(Connection con, PreparedStatement stmt, ResultSet rs){
closeConnection(con, stmt);
try {
if(rs!=null){
rs.close();
}
} catch (SQLException ex) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
####################################
Controle
package com.login.control;
import com.login.dao.DaoUser;
import com.login.dao.InterfaceDaoUser;
import com.login.model.ModelUser;
import java.util.List;
import javax.swing.JOptionPane;
public class ControlUser {
private DaoUser dao;
private InterfaceDaoUser interfaceDaoUser;
public ControlUser(){
this.interfaceDaoUser=new DaoUser();
}
public void novo(ModelUser modelUser){
if(modelUser !=null && !modelUser.getNome().equals("") && !modelUser.getLogin().equals("") && !modelUser.getSenha().equals("")){
interfaceDaoUser.novo(modelUser);
JOptionPane.showMessageDialog(null, "Cadastro CONCLUIDO com sucesso!");
}else{
JOptionPane.showMessageDialog(null, "Todos os campos sao necessários!");
}
}
public void alterar(ModelUser modelUser){
if(modelUser != null && modelUser.getId()>0){
interfaceDaoUser.excluir(modelUser);
JOptionPane.showMessageDialog(null, "Cadastro EXCLUIDO com sucesso!");
}else{
JOptionPane.showMessageDialog(null, "Informe um cadastro a ser EXCLUIDO!");
}
}
public List<ModelUser> read(){
return interfaceDaoUser.read();
}
}
######################################
Visão
public class FRMConsoleUser extends javax.swing.JFrame {
InterfaceDaoUser interfaceDaoUser;
DaoUser daoUser = new DaoUser();
ModelUser modelUser = new ModelUser();
int login_id;
/**
* Creates new form FRMConsoleUser
*/
public FRMConsoleUser() {
initComponents();
DefaultTableModel modelo = (DefaultTableModel) jTableLogin.getModel();
jTableLogin.setRowSorter(new TableRowSorter(modelo));
//https://www.youtube.com/watch?v=W5LsoFlwAWE&list=PLWd_VnthxxLfeEUK08gB7G3316OS5xIT3&index=14
readJTable();
}
public void readJTable() {
DefaultTableModel modelo = (DefaultTableModel) jTableLogin.getModel();
modelo.setNumRows(0);
DaoUser du = new DaoUser();
for (ModelUser tmp : du.read()) {
modelo.addRow(new Object[]{
tmp.getId(),
tmp.getNome(),
tmp.getLogin(),
tmp.getSenha()
});
}
}
private void jButtonNovoActionPerformed(java.awt.event.ActionEvent evt) {
modelUser = new ModelUser();
modelUser.setNome(jTextFieldNome.getText());
modelUser.setLogin(jTextFieldLogin.getText());
modelUser.setSenha(jTextFieldSenha.getText());
//
//daoUser.novo(modelUser);
interfaceDaoUser.novo(modelUser);
}
private void jButtonAlterarActionPerformed(java.awt.event.ActionEvent evt) {
modelUser = new ModelUser();
modelUser.setId(login_id);
System.out.println("login_id = "+login_id);
modelUser.setNome(jTextFieldNome.getText());
modelUser.setLogin(jTextFieldLogin.getText());
modelUser.setSenha(jTextFieldSenha.getText());
interfaceDaoUser.alterar(modelUser);
}
private void jButtonExcluirActionPerformed(java.awt.event.ActionEvent evt) {
modelUser = new ModelUser();
modelUser.setId(login_id);
System.out.println("login_id = "+login_id);
interfaceDaoUser.excluir(modelUser);
carregarDados(“SELECT * FROM tbl_login”);
}
private void jTableLoginMouseClicked(java.awt.event.MouseEvent evt) {
//String nome = jTableLogin.getValueAt(jTableLogin.getSelectedRow(), 1).toString();
login_id =Integer.parseInt(jTableLogin.getValueAt(jTableLogin.getSelectedRow(), 0).toString());
carregarDados(“SELECT * FROM tbl_login WHERE tbl_login.id=’” + login_id + "’ ");
}
private void jButtonLimparActionPerformed(java.awt.event.ActionEvent evt) {
jTextFieldId.setText("");
jTextFieldNome.setText("");
jTextFieldLogin.setText("");
jTextFieldSenha.setText("");
}
// Ao clicar no item da Tabela ele carrega no campos jtextField…
private void carregarDados(String sql) {
try {
Connection con = ConnectionFactory.getConnnection();
PreparedStatement stmt = null;
ResultSet rs = null;
stmt = con.prepareStatement(sql);
rs = stmt.executeQuery();
while (rs.next()) {
jTextFieldId.setText(String.valueOf(rs.getInt("id")));
jTextFieldNome.setText(rs.getString("nome"));
jTextFieldLogin.setText(rs.getString("login"));
jTextFieldSenha.setText(rs.getString("senha"));
}
con.close();
rs.close();
stmt.close();
} catch (Exception e) {
e.getMessage();
}
}
############################################
Banco
DROP DATABASE db_login;
CREATE DATABASE db_login;
USE db_login;
CREATE TABLE tbl_login(
id INT( 20 ) AUTO_INCREMENT,
nome VARCHAR(255),
login VARCHAR(255),
senha VARCHAR(255),
PRIMARY KEY (id)
);
INSERT INTO tbl_login (nome, login, senha) VALUES ('marcel', 'adm_marcel','123');
INSERT INTO tbl_login (nome, login, senha) VALUES ('ab', 'adm_ab','123');
INSERT INTO tbl_login (nome, login, senha) VALUES ('treino', 'adm_treino','123');
DROP TABLE tbl_login;
SELECT * FROM tbl_login;
#########################
Erro ao clicar Excluir (notar que login_id assume o valor do campo clicado)
login_id = 3
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.login.view.FRMConsoleUser.jButtonExcluirActionPerformed(FRMConsoleUser.java:301)
at com.login.view.FRMConsoleUser.access$500(FRMConsoleUser.java:14)
at com.login.view.FRMConsoleUser$6.actionPerformed(FRMConsoleUser.java:139)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)