AJUDA COM classes DAO metodo de busca entre duas tabelas

2 respostas
K
Bom dia pessoal... Estou com um problema e gostaria da ajuda de vcs.. Bom e o seguinte.. Tenho as classes ==> Banco, BancoDAO, Pessoa, PessoaDAO, ContaCorrente ContaCorrenteDAO, Movimentação , Movimentação DAO).
public class Banco {
    protected String nomeB, codigoB;
.......
public class ContaCorrente{
    protected Banco banco;
     private String agencia , numeroCC;
   protected Pessoa titular;
.......
public class Movimentacao  {
   
    private String codigoMov;
    protected ContaCorrente conta;
    private Date dataMov;
    private String tipo, documento,observacao,agencia;
    private float valor;
.....
 
public class Pessoa {
private String nomeP, codigoP,telefone, logradouro, bairro,cidade,estado,cep, complemento, numero;
..... A classe BancoDAO e PessoaDAO estão funcionando normalmente, consigo atualizar, alterar pesquisar.... Mas o problema começa agora na classe ContaCorrenteDAO... a ContaCorrente faz referencias a classe Banco e a classe Pessoa... eu não estou conseguindo fazer um metodo para me retornar o nome do Banco na classe banco, pq na contaCorrente preciso que busque atravez do codigo o nome do bando eu fiz: Pq preciso que na tela de CadastroDeContaConrrente eu entre com o codigo do banco e ele me retorne o nome do banco, mas esta dando erro.
public ArrayList<ContaCorrente> consultarBanco() throws SQLException {
     ArrayList<ContaCorrente> contas = new ArrayList<ContaCorrente>();
                   String query = "SELECT banco.nome from conta,banco where conta.banco-banco.codigo";
            PreparedStatement pst = connection.prepareStatement(query);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
               ContaCorrente conta = new ContaCorrente();
            conta.getBanco().setCodigoB(rs.getString("banco"));
           contas.add(conta);
        }
        rs.close();
        pst.close();
       return contas;
    }
USO ESTE MEDODO NA TELA CadastroContaCorrente para montar a conta

 private ContaCorrente montaContaCorrente() throws SQLException {
        ContaCorrente contaCorrente = new ContaCorrente();
        contaCorrente.getBanco().setCodigoB(jTBancoCodigo.getText());
       jTBancoNome COMO FAÇO ISSO AQUI ????? pq atraves do jTBancoCodigo ele vai preencher isto aqui
        contaCorrente.setAgencia(jTAgencia.getText());
        contaCorrente.setNumeroCC(jTNumeroCC.getText());
        contaCorrente.getTitular().setNomeP(jTTitular.getText());
         return contaCorrente;

2 Respostas

E

O erro que você mencionou que provavelmente ocorre eh de SQL, especificamente nessa linha:

String query = "SELECT banco.nome from conta,banco where conta.banco-banco.codigo"; 
//veja que acima vc apenas estah fazendo um comparação com a cláusula WHERE mas sem passar nada para a condição.
//o correto serio 
String query = "SELECT banco.nome from conta,banco where conta.banco-banco.codigo = ?"; 
pst.setString(1, codigoBanco);

Outra observação, seu método estah muito estranho, porque você quer retornar uma lista de contas-correntes sendo que você só precisa do objeto Banco, para mostrar o seu nome? Outra coisa, pode existir mais de uma banco cadastrado para com o mesmo código? Caso não, então o resultado serah um uniqueResult, e não um resultList, ah não ser que vc queria fazer um like onde o usuário informa parte do código do banco e te retorna uma lista de posições. Todo caso(imaginando que o resultado seja o uniqueResult) você pode fazer um metodo assim na classe BancoDAO:

public Banco getByCodigo(String codigoBanco) {
        try {
            Banco banco = null;
            pst = connection.prepareStatement("Select * From Banco b Where b.codigoBanco = ?");
            pst.setString(1, codigoBanco);
            ResultSet rs = pst.executeQuery();
            if (rs.next()) {
                banco = new Banco();
                banco.setCodBanco(rs.getString("codBanco"));
                banco.setNome(rs.getString("nomeBanco"));                
            }
            rs.close();
            pst.close();
            return banco;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

Invoque o metodo acima no evento onblur do seu campo text e faça o teste.

K

eBarros… Obrigado pela atenção … vou fazer as correções citadas Obrigado …

Criado 21 de maio de 2010
Ultima resposta 25 de mai. de 2010
Respostas 2
Participantes 2