[RESOLVIDO] Erro ao Salvar no banco

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:

  1. 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).
  2. Depois ele passa na região do código que realiza os “sets” no “modelo”, assim ele fica preenchido.
  3. 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.

1 curtida