[RESOLVIDO] Erro ao Salvar no banco

5 respostas Resolvido
programaçãojavamysql
M

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 ?

5 Respostas

B

Manda o código por favor.

R

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.

M

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());


}
M
Solucao aceita

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!

M

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.

Criado 26 de dezembro de 2017
Ultima resposta 28 de dez. de 2017
Respostas 5
Participantes 4