[Resolvido] Duvidas ao criar método listar em jdbc

6 respostas
iltonk

Pessoal bom dia, eu tenho esse select select usuario.codigousuario, usuario.nome, usuario.cpf, usuario.rg, usuario.orgao, usuario.foneresidencial, usuario.fonecelular,usuario.crmv, endereco.rua, endereco.cep, endereco.bairro, endereco.numero,endereco.cidade, endereco.uf from usuario, endereco where usuario.endereco_codigoendereco = endereco.codigoendereco; como faço o método listar usando jdbc.

desde já agradeço!!

6 Respostas

R

Vai ter que fazer isso no laço do ResultSet, exemplo

Objeto obj = new Objeto();
List<Objeto> lista = new ArrayList<Objeto>();

while(rs.next()) {
    obj.setNome(rs.getString("nome"));
    obj.setTelefone(rs.getString("telefone"));
    lista.add(obj);
}
iltonk

mas esse select está retornando dados de dois objetos, como vou fazer para retornar os dois objetos?

nebster

faça 2 o mesmo while instanciando 2 objetos…

Usuario obj1 = new Usuario();
Endereco obj2 = new Endereco();

obj1.setNome(rs.getString(“nome”));

obj2.setRua(rs2.getString(“rua”));

Margel_Douglas

A grosso modo vc teria que fazer isso em jdbc…

Connection con = null;
                try {
                        final String SQL = "select usuario.codigousuario, usuario.nome, usuario.cpf, usuario.rg, usuario.orgao, usuario.foneresidencial,  
usuario.fonecelular,usuario.crmv, endereco.rua, endereco.cep, endereco.bairro, endereco.numero,endereco.cidade, endereco.uf from usuario, endereco where usuario.endereco_codigoendereco = endereco.codigoendereco"

                        final String DRIVER = "jdbc:postgresql:";//DRIVER DO SEU BANCO --EXEMPLO COM POSTGRESQL
                        final String URL = "//localhost:5432/"; 
                        final String DATABASE = "seu_banco";
                        final String USER = "seu_usuario_do_banco";
                        final String PASS = "sua_senha_do_banco";
                        con = DriverManager.getConnection(DRIVER+URL+DATABASE, USER, PASS);
                        
                        PreparedStatement ppst = con.prepareStatement(SQL);
                        ResultSet rs = ppst.executeQuery();
                        
                        //SUPONHO QUE VC TENHA UMA CLASSE "Usuario"

                        List<Usuario> users = new ArrayList<Usuario>();
                        while(rs.next()){
                                Usuario u = new Usuario();
                                u.setCodigo(rs.getInt("nome_da_coluna_que_representa_o_codigo_no_banco");
                                u.setNome(rs.getString("nome_da_coluna_que_representa_o_nome_no_banco");
                                //...TODOS OS ATRIBUTOS SETADOS
                                users.add(u);
                        }
                } catch (Exception e) {
                        System.out.println(e.getMessage());
                }finally{
                        con.close();
                }

É sempre recomendado que vc coloque isso em uma DAO, que vai gravar o teu usuário e fazer todas as operações com o banco, e também que vc separe a parte de conexão em uma classe que ficaria encarregada de conectar e apenas te devolver a conexão, para que vc não tenha isso em todas as outras DAOs do seu sistema … Recomendo estudar um pouco sobre MVC caso queira ter tudo mais organizado, mas a forma de conexão é esta… Abraço!

iltonk

pessoal esse selec tem um relacionamento quero saber como faço para retornar os dados das duas tabelas do relacionamento ao mesmo tempo para montar um dataTable em jsf

erico_kl
Bom, pela sua SQL você tem um relacionamento Usuário Nx1 Endereço, onde 1 usuário possui 1 endereço e 1 endereço pode ser de vários usuários, certo? Basicamente você deve mapear isso para suas classes..
public class Usuario {
   private int codigo;
   private Endereco endereco;
   //...
}
e na hora de iterar o ResultSet:
//...
Usuario usuario;
while (rs.next()) {
   usuario = new Usuario();
   usuario.setXXX(...); // preenche os campos do usuario com o ResultSet

   if (rs.getString("rua") != null) {
      Endereco endereco = new Endereco();
      // popula o endereco do usuário...

      usuario.setEndereco(endereco);
   } 
}

Entendeu?

Se você quiser facilitar isso tudo, te aconselho a dar uma olhada no link do MentaBean que está na minha assinatura.. É bem o que você precisa ;).

Valeu!

Criado 23 de novembro de 2012
Ultima resposta 23 de nov. de 2012
Respostas 6
Participantes 5