Pessoal estou com a seguinte dúvida:
Trabalho com o oracle e tenho a necessidade de realizar selects de diversos tipos, a minha dúvida é a respeito do retorno desses selects eu tenho que criar uma classe java para cada select diferente que eu fizer sendo que retornar o ResultSet não funciona pois eu fecho a conexão com o banco de dados.
Existe um outra maneira mais inteligente de retornar o resultado de consulta SQL ?
Ex: Select id, nome From Cliente -> utiliza uma classe chamada cliente.
Select a.id, b.id, a.nome, b.total From Cliente a, Pedido b -> tenho que criar uma classe para esse tipo de retorno ?
Vc tem que usar o pattern DAO(Classe) …
Exemplo.:
public class DAOCliente {
public int consultar(String codigo) throws SQLException {
PreparedStatement prepStatement = null;
ResultSet rs = null;
String telefone = "";
String query = " SELECT telefone FROM cliente WHERE cod = ?";
try
{
conexao = ControladorConexao.abrirConexao();
prepStatement = conexao.prepareStatement(query);
prepStatement.setString(1, codigo);
rs = prepStatement.executeQuery();
while (rs.next()) {
telefone = rs.getString("telefone");
}
} catch (SQLException e) {
throw new SQLException(e.getMessage());
} finally {
prepStatement.close();
rs.close();
conexao.close();
}
return telefone ;
}
public void incluir(VOCliente cliente) throws SQLException {
PreparedStatement prepStatement = null;
final String sql = " INSERT INTO cliente (COD_CARGO , telefone) VALUES (? , ?) ";
try {
conexao = ControladorConexao.abrirConexao();
prepStatement = conexao.prepareStatement(sql);
prepStatement.setString(1, cliente.getCodigo());
prepStatement.setDate(2, cliente.getTel());
prepStatement.executeUpdate();
System.out.println(" Incluído com Sucesso ! \n");
} catch (SQLException e) {
throw new SQLException(e.getMessage());
} finally {
prepStatement.close();
conexao.close();
}
}//fim do metodo incluir
}
Nunca trabalhe com valores soltos, isso fere ou praticamente mata o modelo OO… crie classes para representar seus dados…
ex.:
[code]public class Cliente{
private int id;
private String nome;
//gettters & setters
}
public class ClienteDAO{
public List obterTodos(){
List lista = new ArrayList();
ResultSet res = //executa consulta
while(res.next()){
Cliente cli = new Cliente();
cli.setId(res.getInt("id"));
cli.setNome(res.getString("nome"));
lista.add(cli);
}
return lista;
}
public Cliente obterPorId(int id){
Cliente cli = null;
ResultSet res = //executa consulta
if(res.first()){
cli = new Cliente();
cli.setId(res.getInt("id"));
cli.setNome(res.getString("nome");
}
return cli;
}
public void incluir(Cliente cli){
//inclui o cliente
}
}[/code]