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

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!!

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);
}

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

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”));

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!

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

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:

[code]//…
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);

}
}[/code]

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!