Verificar antes de executar insert

7 respostas
java
H

Preciso fazer a seguinte verificacao antes de executar o insert, se retorna 0 rows executa o insert caso retorne 1 row nao executa e critica.

query de verificacao (select * from historico where saida is null and status = 1 and provador = ?)

codigo do insert

private void jButtonSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                              
    // TODO add your handling code here:
    try {
        // TODO add your handling code here:
        // FUNCAO DE INSERT NO BANCO DE DADOS
        PreparedStatement pst = conecta.conecta.prepareStatement("INSERT INTO historico (`codvendedor`,`qtdpecas`,`provador`,`entrada`,`saida`,`status`) VALUES (?,?,?,?,?,?);");            
        pst.setInt(1, Integer.parseInt(jTextFieldCodigoVendedor.getText()));
        pst.setInt(2, Integer.parseInt(jTextFieldQuantidadePecas.getText()));
        pst.setInt(3, Integer.parseInt(jTextFieldProvador.getText()));
        pst.setTimestamp(4, new java.sql.Timestamp(new java.util.Date().getTime()));
        pst.setNull(5, 0);
        pst.setBoolean(6, true);                        
        pst.executeUpdate();
        JOptionPane.showMessageDialog(rootPane, "Salvo com sucesso!");
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(rootPane, "Falha ao salvar o registro!\n ERRO: " + ex);
    }

``

7 Respostas

J

faça a consulta no seu banco de dados retornando as informações para seu modelo, depois você faz um pequeno teste:

if (meuModelo.first() == true){

//mensagem informando que já existe um registro inserido

} else {

//realiza o insert

}

Aí você já consegue tratar a exceção desejada, caso verdadeiro não executa e informa o usuário, caso falso executa o insert.

Espero ter ajudado!

H

ate ai tudo bem… só ainda não consegui executar…

J

Posta qual o erro está apresentando, e em que momento acontece o erro, para fique mais fácil te ajudar!

H
private void jButtonSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        String sql = "select * from historico where saida is null and status = 1 and provador = ?";
        try {
            PreparedStatement pst = conecta.conecta.prepareStatement(sql);
            pst.setInt(1, Integer.parseInt(jTextFieldProvador.getText()));
            pst.executeQuery();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(rootPane, "Falha ao salvar o registro!\n ERRO: " + ex);
        }

        try {
            if (conecta.rs.first() == true) {
                JOptionPane.showMessageDialog(rootPane, "Provador Indisponivel!");
            } else {
                try {
                    PreparedStatement pst = conecta.conecta.prepareStatement("INSERT INTO historico (`codvendedor`,`qtdpecas`,`provador`,`entrada`,`saida`,`status`) VALUES (?,?,?,?,?,?);");
                    pst.setInt(1, Integer.parseInt(jTextFieldCodigoVendedor.getText()));
                    pst.setInt(2, Integer.parseInt(jTextFieldQuantidadePecas.getText()));
                    pst.setInt(3, Integer.parseInt(jTextFieldProvador.getText()));
                    pst.setTimestamp(4, new java.sql.Timestamp(new java.util.Date().getTime()));
                    pst.setNull(5, 0);
                    pst.setBoolean(6, true);
                    pst.executeUpdate();
                    JOptionPane.showMessageDialog(rootPane, "Salvo com sucesso!");
                } catch (SQLException ex) {
                    JOptionPane.showMessageDialog(rootPane, "Falha ao salvar o registro!\n ERRO: " + ex);
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
H

erro nessa linha
if (conecta.rs.first() == true) {

P

Tens de o obter o teu rs da instrução pst.executeQuery()

H

??
o que ta faltando?? imaginei que tem que receber… mas nao consegui executar

Criado 16 de setembro de 2016
Ultima resposta 18 de set. de 2016
Respostas 7
Participantes 3