Boa tarde,
Tenho uma tela de cadastro de usuário e esta acontecendo o seguinte problema quando clico no botão salvar:
Quando clico no botão aparece a seguinte mensagem "Column ‘usuario’ cannot be null, ai clico novamente no botão não aparece a mensagem e salva normalmente no banco de dados.
Alguém sabe oque pode ser ?
Manda o código por favor.
Sem o código ficar difícil de ajudar, mas por falar que não pode ser null e logo em seguida salvar, você deve ter colocado no lugar errado a parte do código que busca o valor da variável.
Mas coloque o código sempre que for criar um tópico.
Bom dia brunoi25, Rodrigo_Marden,
Segue o código abaixo, desde já agraço pela atenção.
public class ControleUsuario {
Conexao con = new Conexao();
Connection conexao = null;
PreparedStatement pst = null;
ResultSet rs = null;
public void InserirUsuario(ModeloUsuario mod) {
String sql = "insert into tbusuario(iduser,usuario,fone,login,senha,perfil) values(?,?,?,?,?,?)";
try {
conexao = Conexao.conector();
pst = conexao.prepareStatement(sql);
pst.setInt(1, mod.getIduser());
pst.setString(2, mod.getUsuario());
pst.setString(3, mod.getFone());
pst.setString(4, mod.getLogin());
pst.setString(5, mod.getSenha());
pst.setString(6, mod.getPerfil());
int inserido = pst.executeUpdate();
if (inserido > 0) {
JOptionPane.showMessageDialog(null, "Dados inseridos com sucesso");
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro na inserção de dados. \n ERRO: " + ex.getMessage());
System.out.println("Erros " + ex.getMessage());
}
}
}
abaixo minha View
public TelaUsuario() {
initComponents();
conn = Conexao.conector();
txt_caminho.setVisible(false);
}
/**
* 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
btnSalvar = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jTextField7 = new javax.swing.JTextField();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
txtIdUser = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
txtNome_Usuario = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
jSeparator2 = new javax.swing.JSeparator();
txtFone_Usuario = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
txtLogin_Usuario = new javax.swing.JTextField();
jSeparator3 = new javax.swing.JSeparator();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
cbPerfil_Usuario = new javax.swing.JComboBox<>();
txtSenha_Usuario = new javax.swing.JTextField();
jSeparator4 = new javax.swing.JSeparator();
jSeparator5 = new javax.swing.JSeparator();
jButton6 = new javax.swing.JButton();
txt_caminho = new javax.swing.JTextField();
lblFoto = new javax.swing.JLabel();
setClosable(true);
setIconifiable(true);
setMaximizable(true);
setTitle("Cadastro de usúarios");
jPanel1.setBackground(new java.awt.Color(102, 102, 102));
jButton1.setText("Novo");
btnSalvar.setText("Salvar");
btnSalvar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSalvarActionPerformed(evt);
}
});
jButton3.setText("Editar");
jButton4.setText("Excluir");
jButton5.setText("Pesquisar");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(jButton1)
.addGap(18, 18, 18)
.addComponent(btnSalvar)
.addGap(18, 18, 18)
.addComponent(jButton3)
.addGap(18, 18, 18)
.addComponent(jButton4)
.addGap(18, 18, 18)
.addComponent(jButton5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jTextField7, javax.swing.GroupLayout.DEFAULT_SIZE, 461, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(btnSalvar)
.addComponent(jButton3)
.addComponent(jButton4)
.addComponent(jButton5)
.addComponent(jTextField7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(20, Short.MAX_VALUE))
);
jPanel2.setBackground(new java.awt.Color(32, 33, 35));
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Usúarios", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 3, 12), new java.awt.Color(255, 255, 255))); // NOI18N
jPanel2.setForeground(java.awt.Color.orange);
jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel1.setForeground(java.awt.Color.orange);
jLabel1.setText("Código:");
jPanel2.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 28, -1, -1));
txtIdUser.setBackground(new java.awt.Color(32, 33, 35));
txtIdUser.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtIdUser.setForeground(new java.awt.Color(255, 255, 255));
txtIdUser.setBorder(null);
jPanel2.add(txtIdUser, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 48, 71, -1));
jLabel2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel2.setForeground(java.awt.Color.orange);
jLabel2.setText("Nome:");
jPanel2.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 84, -1, -1));
txtNome_Usuario.setBackground(new java.awt.Color(32, 33, 35));
txtNome_Usuario.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtNome_Usuario.setForeground(new java.awt.Color(255, 255, 255));
txtNome_Usuario.setBorder(null);
jPanel2.add(txtNome_Usuario, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 104, 350, -1));
jLabel3.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel3.setForeground(java.awt.Color.orange);
jLabel3.setText("Fone:");
jPanel2.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 145, -1, -1));
jPanel2.add(jSeparator1, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 68, 59, 10));
jPanel2.add(jSeparator2, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 124, 354, 10));
txtFone_Usuario.setBackground(new java.awt.Color(32, 33, 35));
txtFone_Usuario.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtFone_Usuario.setForeground(new java.awt.Color(255, 255, 255));
txtFone_Usuario.setBorder(null);
jPanel2.add(txtFone_Usuario, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 165, 170, 20));
jLabel4.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel4.setForeground(java.awt.Color.orange);
jLabel4.setText("Login:");
jPanel2.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 150, -1, -1));
txtLogin_Usuario.setBackground(new java.awt.Color(32, 33, 35));
txtLogin_Usuario.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtLogin_Usuario.setForeground(new java.awt.Color(255, 255, 255));
txtLogin_Usuario.setBorder(null);
jPanel2.add(txtLogin_Usuario, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 170, 160, -1));
jPanel2.add(jSeparator3, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 250, 180, 10));
jLabel5.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel5.setForeground(java.awt.Color.orange);
jLabel5.setText("Senha:");
jPanel2.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 210, -1, -1));
jLabel6.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel6.setForeground(java.awt.Color.orange);
jLabel6.setText("Perfil:");
jPanel2.add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 210, -1, -1));
cbPerfil_Usuario.setBackground(new java.awt.Color(32, 33, 35));
cbPerfil_Usuario.setForeground(new java.awt.Color(255, 255, 255));
cbPerfil_Usuario.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "admin", "usuario" }));
cbPerfil_Usuario.setBorder(null);
jPanel2.add(cbPerfil_Usuario, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 230, 160, -1));
txtSenha_Usuario.setBackground(new java.awt.Color(32, 33, 35));
txtSenha_Usuario.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtSenha_Usuario.setForeground(new java.awt.Color(255, 255, 255));
txtSenha_Usuario.setBorder(null);
jPanel2.add(txtSenha_Usuario, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 230, 170, -1));
jPanel2.add(jSeparator4, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 190, 170, 10));
jPanel2.add(jSeparator5, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 191, 170, 10));
jButton6.setBackground(java.awt.Color.magenta);
jButton6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton6.setForeground(new java.awt.Color(255, 255, 255));
jButton6.setText("FOTO");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
lblFoto.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 3, true));
lblFoto.setPreferredSize(new java.awt.Dimension(280, 280));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 389, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txt_caminho)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 220, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(133, 133, 133))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(lblFoto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(103, 103, 103))))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 337, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addComponent(lblFoto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_caminho, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 21, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
conn = Conexao.conector();
controle.InserirUsuario(modelo);
modelo.setIduser(Integer.parseInt(txtIdUser.getText()));
modelo.setUsuario(txtNome_Usuario.getText());
modelo.setFone(txtFone_Usuario.getText());
modelo.setLogin(txtLogin_Usuario.getText());
modelo.setSenha(txtSenha_Usuario.getText());
modelo.setPerfil(cbPerfil_Usuario.getSelectedItem().toString());
}
Olá @meyer!
Pelo que vi, no método “btnSalvarActionPerformed”, você está chamando o “controle.InserirUsuario(modelo);” antes de recuperar os valores do objeto “modelo”.
Acredito que se você colocaro corpo do método da seguinte forma (apenas invertendo a ordem do que é feito), funcionará:
modelo.setIduser(Integer.parseInt(txtIdUser.getText()));
modelo.setUsuario(txtNome_Usuario.getText());
modelo.setFone(txtFone_Usuario.getText());
modelo.setLogin(txtLogin_Usuario.getText());
modelo.setSenha(txtSenha_Usuario.getText());
modelo.setPerfil(cbPerfil_Usuario.getSelectedItem().toString());
controle.InserirUsuario(modelo);
Explicação do motivo do erro:
- Como o método “inserir” é chamado na primeira vez passando o “modelo”, sem ter feito os “sets” dele, dá erro pois os valores estão nulos, o que não pode ocorrer (Column ‘xxx’ cannot be null).
- Depois ele passa na região do código que realiza os “sets” no “modelo”, assim ele fica preenchido.
- Você aciona o botão novamente, e aí o modelo estará preenchido (por causa da primeira execução), e então funciona.
Ou seja, se você trocar a ordem do seu código, o modelo será preenchido antes do chamar o método “inserir”, o que fará com que os valores não estejam nulos.
Espero ter ajudado; poste aí os resultados!
Boa noite MKlismann,
Foi exatamente isso que você explicou, fiz a inversão conforme você explicou e agora não da erro mais.
Sabia que seria algo simples mas não tão simples assim.
Obrigado, abraço.