Estou com a seguinte dúvida. Alguém pode me dar um help?
- Testando a classe quero implementar o pesquisar (procurar) no banco pelo id. Quero que digite o id e depois lista apenas o que eu pesquisei. Só que meu banco está pesquisando tudo além daquele, lista tudo, inclusive até quando o id nao existe.
Onde errei no procurar? E no listar?
Descrevi abaixo o repositorio e o main.
Obs.: o inserir, atualizar e remover estão ok. No aguardo grata desde já,
public class RepositorioCertidoesBD implements RepositorioCertidoes{
private String nomeDriver;
private String urlConexao;
private String usuarioConexao;
private String senhaConexao;
private boolean indDriverCarregado;
private static final String MSG_FALHA_CARGA_DRIVER =
"Nome do driver JDBC usado não corresponde a uma classe válida";
private static final String MSG_ERRO_CONEXAO =
"Erro ao obter conexão com o banco de dados";
private static final String MSG_ERRO_ACESSO_BD =
"Erro de acesso ao banco de dados";
private static final String MSG_CERTIDAO_NAO_CADASTRADA =
"Certidao não cadastrada";
private static final String MSG_ID_NAO_ENCONTRADO =
"ID não encontrado";
private static final String MSG_ID_INVALIDO =
"ID inválido";
private static final String INSERT_CERTIDAO =
"INSERT INTO certidao (id, nome, DiasEmissao, Orgao_Emissor_id) VALUES (?,?,?,?)";
//"INSERT INTO certidao (nome, DiasEmissao, Orgao_Emissor_id) VALUES (?,?,?,?)";
private static final String PROCURA_CERT=
"SELECT id, nome, DiasEmissao, Orgao_Emissor_id FROM certidao WHERE id = ?";
private static final String LISTA_CERT =
"SELECT id, nome, DiasEmissao, Orgao_Emissor_id FROM certidao";
private static final String DELETE_CERT =
"DELETE FROM certidao WHERE id = ?";
private static final String ATUALIZAR_CERT =
"UPDATE certidao SET nome = ? WHERE id = ?";
public RepositorioCertidoesBD(
String pNomeDriver,
String pUrlConexao,
String pUsuarioConexao,
String pSenhaConexao) {
super();
nomeDriver = pNomeDriver;
urlConexao = pUrlConexao;
usuarioConexao = pUsuarioConexao;
senhaConexao = pSenhaConexao;
indDriverCarregado = false;
}
private Connection getConexao() {
if (!indDriverCarregado) {
try {
Class.forName(nomeDriver);
indDriverCarregado = true;
} catch (ClassNotFoundException e) {
System.err.print(MSG_FALHA_CARGA_DRIVER);
}
}
try {
return DriverManager.getConnection(
urlConexao,
usuarioConexao,
senhaConexao);
} catch (SQLException e) {
System.err.print(MSG_ERRO_CONEXAO);
return null;
}
}
public void inserir (Certidao c) {
if (c != null) {
Connection con = getConexao();
PreparedStatement psCert = null;
PreparedStatement psEnd = null;
try {
psCert = con.prepareStatement(INSERT_CERTIDAO);
psCert.setInt(1, c.getId());
psCert.setString(2, c.getNome());
psCert.setString(3, c.getDiasEmissao());
psCert.setInt(4, c.getOrgao_Emissor_id());
psCert.executeUpdate();
} catch (SQLException e) {
System.err.print(e.getMessage());
} finally {
fechaRecursos(con, psCert, null);
fechaRecursos(con, psEnd, null);
}
}
}
public void atualizar (Certidao c) {
if (c != null) {
Connection con = getConexao();
PreparedStatement psCert = null;
PreparedStatement psEnd = null;
try {
psCert = con.prepareStatement(ATUALIZAR_CERT);
psCert.setString(1, c.getNome());
psCert.setInt(2, c.getId());
//psCert.setString(3, c.getDiasEmissao());
//psCert.setInt(4, c.getOrgao_Emissor_id());
psCert.executeUpdate();
} catch (SQLException e) {
System.err.print(e.getMessage());
} finally {
fechaRecursos(con, psCert, null);
fechaRecursos(con, psEnd, null);
}
}
}
public Certidao procurar (int id) {
if (id != 0) {
Connection con = getConexao();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(PROCURA_CERT);
ps.setInt(1, id);
rs = ps.executeQuery();
if (rs.next()) {
int bdId = rs.getInt(1);
String bdNome = rs.getString(2);
String bdDiasEmissao = rs.getString(3);
int bdOrgao_Emissor_id = rs.getInt(4);
Certidao cert = new Certidao();
cert.setId(bdId);
cert.setId(rs.getInt(1));
cert.setNome(bdNome);
cert.setDiasEmissao(bdDiasEmissao);
cert.setOrgao_Emissor_id(bdOrgao_Emissor_id);
return cert;
} else {
System.err.print(MSG_CERTIDAO_NAO_CADASTRADA);
}
} catch (SQLException e) {
System.err.println(MSG_ERRO_ACESSO_BD);
System.err.println(e.getMessage());
} finally {
fechaRecursos(con, ps, rs);
}
}
return null;
}
public ResultSet listar() {
Connection con = getConexao();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(LISTA_CERT);
rs = ps.executeQuery();
if (rs.next()){
return rs;
}
} catch (SQLException e) {
System.err.println(MSG_ERRO_ACESSO_BD);
System.err.println(e.getMessage());
}
return rs;
}
public void remover(int id) {
if (id != 0) {
Connection con = getConexao();
PreparedStatement ps = null;
try {
ps = con.prepareStatement(DELETE_CERT);
ps.setInt(1, id);
int rows = ps.executeUpdate();
if (rows <= 0) {
System.err.println("ID não encontrado");
}
} catch (SQLException e) {
System.err.println(MSG_ID_NAO_ENCONTRADO);
System.err.println(e.getMessage());
} finally {
fechaRecursos(con, ps, null);
}
} else {
System.err.println(MSG_ID_INVALIDO);
}
}
private void fechaRecursos(
Connection con,
PreparedStatement ps,
ResultSet rs) {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (ps != null)
ps.close();
} catch (Exception e) {
}
try {
if (con != null)
con.close();
} catch (Exception e) {
}
}
}
public class TesteCertidoes {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Certidao c = new Certidao();
c.setId(2);
c.setNome("URB");
c.setDiasEmissao("10");
c.setOrgao_Emissor_id(5);
c.setId(3);
c.setNome("Compesa");
c.setDiasEmissao("12");
c.setOrgao_Emissor_id(5);
ConexionJDBC.obterInstancia().atualizar(c);
ConexionJDBC.obterInstancia().remover(2);
ConexionJDBC.obterInstancia().procurar(1);
ConexionJDBC.obterInstancia().inserir(c);
ResultSet rs = ConexionJDBC.obterInstancia().listar();
ResultSetMetaData mdata;
try {
mdata = rs.getMetaData();
int colCount = mdata.getColumnCount();
String[] colNames = new String[colCount];
for (int i = 1; i <= colCount; i++) {
colNames[i - 1] = mdata.getColumnName(i);
}
rs.beforeFirst();
while (rs.next()) {
String[] rowData = new String[colCount];
for (int i = 1; i <= colCount; i++) {
rowData[i - 1] = rs.getString(i);
System.out.println(rowData[i - 1]);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}