JDBC metodo procurar

Java

22/11/2016

Estou com a seguinte dúvida. Alguém pode me dar um help?

1. 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();
}
}
}
Janaína Bandeira

Janaína Bandeira

Curtidas 0
POSTAR