Dúvida sobre como buscar dados de um banco através do Resultset

6 respostas
S

Boa tarde galera, estou desenvolvendo uma pequena aplicação em camadas e devido a não ter tanto conhecimento, estou apanhando um pouco na hora de buscar os dados do banco utilizando o resultset, gostaria então humildemente de solicitar uma ajuda de vocês, para que assim eu possa conseguir resolver o meu problema. Estou trabalhando com 3 camadas, uma onde contem as classes, outra com a regra de negócios e uma contendo meus formulários.

Só para auxilio, essa é a parte onde salva no banco.

public void salvar(cliente cliente) {

     String  sql = ("INSERT INTO cliente (cli_nome, cli_endereco, cli_numero, cli_bairro, cli_cidade, cli_estado, cli_cpf, cli_rg, cli_tel, cli_datanasc, cli_infoadd) " +
                    "VALUES ( " +
                    "'" +   cliente.get_nome()       + "', " +
                    "'" +   cliente.get_endereco()   + "', " +
                    "'" +   cliente.get_numero()     + "', " +
                    "'" +   cliente.get_bairro()     + "', " +
                    "'" +   cliente.get_cidade()     + "', " +
                    "'" +   cliente.get_estado()     + "', " +
                    "'" +   cliente.get_cpf()        + "', " +
                    "'" +   cliente.get_rg()         + "', " +
                    "'" +   cliente.get_telefone()   + "', " +
                    "'" +   cliente.get_datanasc()   + "',"  +
                    "'" +   cliente.get_infoadd()    + "')");

                    try {
                           this.criarConexao();
                           stmt.execute(sql);
                           this.fecharConexao();
                    }
                    catch(SQLException ex) {
                        ex.printStackTrace();
                    }

    }

Essa seria a minha classe de conexão ao banco.

private Connection conexao = null;
    protected Statement stmt = null;
    public ResultSet resultSet = null;

    public ConexaoDAO() {

       
    }

    public void criarConexao() {
        try {
            Class.forName(db_driver);
          //  System.out.println("Driver rodou beleza");
            conexao = DriverManager.getConnection(db_url, db_user, db_password);
            stmt = conexao.createStatement();
         //  resultSet = stmt.executeQuery(sql);
            
        }
        catch (ClassNotFoundException ex) {
      //    System.out.println("Problema na fonte de dados!");
            ex.printStackTrace();
        }
        catch (SQLException ex) {
        //    System.out.println("Problema na conexão!");
            ex.printStackTrace();
        }
    }

    protected void fecharConexao() {
        try {
            if(resultSet != null)
                resultSet.close();
            if (stmt != null )
                stmt.close();
            if (conexao != null )
                conexao.close();
        }
        catch (SQLException ex){
            ex.printStackTrace();
        }
    }

Gostaria então saber de vocês, como acessar os dados desse banco através de um método e retorna-los para o meu formulário utilizando o resultset. Gostaria que utilizasse como base as informações anteriormente repassadas pelo metodo salvar.
Desde já agradeço a atenção de todos!

6 Respostas

pedruhenrik

e ae sebastian, blz?

aqui tem um material legal fora algumas explicações sobre ResultSet:

http://www.caelum.com.br/apostilas/

boa sorte!

att,

S

Blza pedruhenrik.

Fico grato pela indicação das apostilas Caelum, mas se alguém pudesse me ajudar com pelo menos alguma idéia, ficaria mais grato ainda.
Obrigado a todos novamente!

Ace

Cara vamos ver se posso te ajudar com algo.
O que vc acha de mudarmos seu metodo salvar para…

public void adiciona(Cliente cliente) throws SQLException {

		// prepared statement para inserir
		PreparedStatement stmt = this.connection
				.prepareStatement("insert into cliente (cli_nome, cli_endereco, cli_numero, cli_bairro, cli_cidade, cli_estado, cli_cpf, cli_rg, cli_tel, cli_datanasc, cli_infoadd) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

		// seta os valores
		stmt.setString(1, cliente.getNome());
		stmt.setString(2, cliente.getEmail());
		stmt.setString(3, cliente.getEndereco());

               //seta todos os atributos

		// executa
		stmt.execute();
		stmt.close();
	}

Desta forma você terá um método bem elegante, pois a cada novo cliente vc deverá chamar esse metodo onde salvará no banco.

public List<Cliente> getLista() throws SQLException {

		PreparedStatement stmt = this.connection.prepareStatement("select * from cliente");
		ResultSet rs = stmt.executeQuery();

		List<Cliente> list = new ArrayList<Cliente>();
		while (rs.next()) {
			// criando o objeto Cliente 
			Cliente cliente = new Cliente();
			cliente.setId(rs.getLong("id"));
			cliente.setNome(rs.getString("nome"));			
			cliente.setEndereco(rs.getString("endereco"));
                        
                        //...outros atributos que desejar...

			// adicionando o objeto a lista
			list.add(cliente);
		}

		rs.close();
		stmt.close();

		return list;
	}

Era mais ou menos isso que precisava?
abs

S

Nossa, já está me ajudando demais, porem me surgiram novas dúvidas, porque utilizar uma lista com os clientes? Eu imaginava que trabalhando com o statement e resultset não teria necessidade de utilizar por exemplo uma lista, gostaria de saber se possivel, a necessidade do uso da lista nesse caso. Desde já obrigado mais uma vez!!!

Ace

Na verdade, é sempre bom vc criar métodos de Adicionar/Alterar, Remover e Listar…
pois qualquer programinha que desejar fazer, os mesmos serão bem uteis…

juliocesarss

Não sei se isso vai te ajudar, mas é o jeito que eu utilizo.

//método que faz a pesquisa e retorna o resultado
int retornaCod() {
        try {
            ResultSet resultado = bd.consultaTable("SELECT cod_ocorrencia FROM ocorrencia ");
            if (resultado != null && resultado.next()) {
                do {
                    cod = (resultado.getInt("cod_ocorrencia"));
                } while (resultado.next());
            }
        } catch (java.sql.SQLException e) {
            System.err.println("Erro de SQL:" + e.getMessage());
        }


        return cod;
    }

E aqui o método “consultaTable” que eu utilizo ae em cima.

public ResultSet consultaTable(String ConsultaSQL) throws SQLException
  {
     ResultSet resultado = null;
     try{
        if(con != null)
        {
          if(statement !=null)
                 statement.close();
          statement = con.createStatement();
          resultado = statement.executeQuery(ConsultaSQL);
        }
      } catch ( SQLException e ){
        System.out.println(e.getMessage());
        /*JOptionPane.showMessageDialog( null, "Nao foi possivel atender a solicitação");*/
      }
      return resultado;
 }

Espero que ajude.

Criado 30 de setembro de 2010
Ultima resposta 1 de out. de 2010
Respostas 6
Participantes 4