Dúvida consulta SQL com java

2 respostas
L

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 ?

2 Respostas

E

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 


}
J

Nunca trabalhe com valores soltos, isso fere ou praticamente mata o modelo OO... crie classes para representar seus dados...

ex.:

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
   }
}
Criado 30 de agosto de 2006
Ultima resposta 30 de ago. de 2006
Respostas 2
Participantes 3