boa tarde gente...
na classe abaixo eu tenho o metodo "update"
que se um registro existir na tabela ele faz o update normalmente
porem eu preciso fazer uma rotina que:
se for dado um update e o registro nao existir o metodo "update" chamara o
metodo "Insere" para inserir o registro
meu problema:
da lina 100 ate a linha 120
observem que ja tentei de tudo
ou seja
primeiro, achei que se o reistro nao existisse ele iria sair num SQLException
porque pelo SQLException eu iria testar o codigo do erro e sendo -2601 que e o erro do SQLSERVER (banco que uso)
de registro inexistente eu iria chamar o metodo "Insere" porem ele nao sai como SQLException
inclusive coloquei para aparecer qualquer mensagem para verificar se estava passando por ali
depois eu pensei que o smtm.execute, como ele retorna um boolean
se fosse false pensei que era porque nao tinha encontrado o registro porem
ele me retorna false se existir o registro ou nao existir o registro
em fim:
como eu consigo verificar se o Update que estou dando no metodo me diga se encontrou o registro ou nao...
desde ja agradeco...
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Tabelas;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import master00.ConexaoDB;
/**
*
* @author Jonas
*/
public class UsuarioDAO {
private Connection con;
public UsuarioDAO() throws Exception {
this.con = ConexaoDB.getConnection();
}
public Usuario getUsuario(String usucodigo) throws Exception {
Usuario usuario;
try {
usuario = new Usuario();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "UsuarioDAO" + e);
System.exit(0);
throw new Exception(e); // se nao tiver o usuario vira erro
}
try {
PreparedStatement smtm = con.prepareStatement("select * from usuario where usucodigo = ?");
smtm.setString(1, usucodigo);
ResultSet rs = smtm.executeQuery();
if (rs.next()) {
usuario.setUsucodigo(rs.getString("usucodigo"));
usuario.setUsunome(rs.getString("usunome"));
usuario.setUsutipo(rs.getString("usutipo"));
usuario.setUsucodfunc(rs.getInt("usucodfunc"));
usuario.setUsuloja(rs.getInt("usuloja"));
usuario.setUsusenha(rs.getString("ususenha"));
usuario.setUsuprivilegio(rs.getString("usuprivilegio"));
usuario.setUsutipoimp(rs.getString("usutipoimp"));
usuario.setUsudirtrab(rs.getString("usudirtrab"));
usuario.setUsufuncaocaixa(rs.getString("usufuncaocaixa"));
usuario.setUsugerimp(rs.getString("usugerimp"));
} else {
throw new Exception("Usuário Não Cadastrado");
}
rs.close();
smtm.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e);
System.exit(0);
}
return usuario;
}
public void update(Usuario usuario) throws Exception {
System.out.println(usuario.getUsucodigo());
try {
PreparedStatement smtm = con.prepareStatement(
"update usuario "
+ " set usunome= ?, "
+ " usutipo= ?, "
+ " usucodfunc= ?, "
+ " usuloja= ?, "
+ " ususenha= ?, "
+ " usuprivilegio= ?, "
+ " usutipoimp= ?, "
+ " usudirtrab= ?, "
+ " usugerimp= ? "
+ " where usucodigo = ?");
smtm.setString(1, usuario.getUsunome());
smtm.setString(2, usuario.getUsutipo());
smtm.setInt(3, usuario.getUsucodfunc());
smtm.setInt(4, usuario.getUsuloja());
smtm.setString(5, usuario.getUsusenha());
smtm.setString(6, usuario.getUsuprivilegio());
smtm.setString(7, usuario.getUsutipoimp());
smtm.setString(8, usuario.getUsudirtrab());
smtm.setString(9, usuario.getUsugerimp());
smtm.setString(10, usuario.getUsucodigo());
System.out.println("alterando registro");
boolean b;
b=smtm.execute();
System.out.println(b);
if (!b) {
Insere(usuario);
}
smtm.close();
con.commit();
System.out.println("alterando regis002");
} catch (SQLException e) {
System.out.println("alterando regis003");
System.out.println(e);
if (e.getErrorCode() == -2601) {
Insere(usuario);
return;
}
throw new Exception(e);
}
}
private void Insere(Usuario usuario) throws Exception {
try {
PreparedStatement smtm = con.prepareStatement(
"insert usuario (usucodigo,"
+ " usunome,usutipo,usucodfunc,"
+ " usuloja,ususenha,usuprivilegio,"
+ " usutipoimp,usudirtrab,usugerimp)"
+ " values "
+ "(?,?,?,?,?,?,?,?,?,?)");
smtm.setString(1, usuario.getUsucodigo());
smtm.setString(2, usuario.getUsunome());
smtm.setString(3, usuario.getUsutipo());
smtm.setInt(4, usuario.getUsucodfunc());
smtm.setInt(5, usuario.getUsuloja());
smtm.setString(6, usuario.getUsusenha());
smtm.setString(7, usuario.getUsuprivilegio());
smtm.setString(8, usuario.getUsutipoimp());
smtm.setString(9, usuario.getUsudirtrab());
smtm.setString(10, usuario.getUsugerimp());
smtm.execute();
smtm.close();
con.commit();
System.out.println("inserindo registro");
} catch (Exception e) {
throw new Exception(e);
}
}
}