Salvar no Banco usando JDBC. [RESOLVIDO]

Boa tarde,

Estou criando um sistema para cadastrar clientes em um estacionamento. Estou confuso de como salvar isso no banco.

Minhas Classes:

[color=red]Classes //////////Atributos[/color]
Box=
-numero -vago
Cliente= -nome -cpf -Telefone -Endereco -Pagamento
Telefone= -telResidencial -telComercial -telCelular
Endereco= -rua -numero -complemento
Pagamento= -dataPagamento -dataPagamento
ClienteReserva= -dataReserva
ClienteInativo= -dataSaida

Essas são minhas classes.
No banco postgres criei tabelas para todas as classes, todas as classes tem [color=red]fks[/color] para Cliente, exeto box que tem cliente com [color=darkred]FK[/color] para box

Abaixo segue a classe onde quero fazer a inclusão no banco.

[code]public class JDBCClienteDao implements ClienteDao{

public void salvar(Cliente cli) {
    Connection conn = PostgreSQL.getConnection();
        try{
            Telefone tel = new Telefone();
                    
            String sql = "Insert Into Cliente(nome,cpf)"; sql += "values(?,?);" 


        }catch(Exception e){
            JOptionPane.showMessapubgeDialog(null,"ERRO AO SALVAR CLIENTE","Erro",JOptionPane.ERROR_MESSAGE, null);
        }
    
}

public void excluir(Cliente cli) {

}

public Cliente consultar(Cliente cli) {

}

public List<Cliente> listar(Cliente cli) {

}

}[/code]
Como faço para salvar os Telefones, Endereços, Pagamentos?
Tenho que fazer querys para cada classe?
O parametro passado no método está correto?

Oi,

Baixe as apostilas,vai ajuda-lo…

http://www.guj.com.br/java/231956-java-controle-de-estoque

http://www.caelum.com.br/download/caelum-java-web-fj21.pdf

acesse o capítulo sobre JDBC.

[quote] Oi,

Baixe as apostilas,vai ajuda-lo…

http://www.guj.com.br/java/231956-java-controle-de-estoque [/quote]

Infelizmente essa apostila, fala somente de conexão com Acess. E não esclaresse em nenhum momento a relação entre tabelas.

mas mesmo assim obrigado.

Vou dar uma olhada na apostila da Caelum

Que banco está usando… :stuck_out_tongue:

A FJ21 é ótima…

Se quiser baixe esta tb,eu gostei… :wink:

http://www.fabiosalvador.com.br/apostilas/apostilajava.pdf

Boa sorte!

[code]public class JDBCClienteDao implements ClienteDao{

public void salvar(Cliente cli) {
    Connection conn = PostgreSQL.getConnection();
        try{
           // Telefone tel = new Telefone();
                    
            String sql = "Insert Into Cliente(codigo,nome,cpf)"; sql += "values('1','joao','123456')";

            PreparedStatement stmt = conn.prepareStatement(sql);
            stmt.setInt(1, cli.getCodigo());
            stmt.setString(2, cli.getNome());
            stmt.setLong(3, cli.getCpf());

            stmt.executeUpdate();

            
        }catch(Exception e){
            JOptionPane.showMessageDialog(null,"erro ao salvar" + e.getMessage());

      }finally{
        try {
            conn.close();
        } catch (SQLException ex) {
            Logger.getLogger(JDBCClienteDao.class.getName()).log(Level.SEVERE, null, ex);
        }

        }
}[/code]

Ocorre o seguinte erro:
“ERRO AO SALVAR, O ÍNDICE DA COLUNA ESTÁ FORA DO INTEVALO: 1,NÚMERO DE COLUNAS:0.”

A linha do INSER deveria ser assim:

String sql = "INSERT INTO Cliente(codigo,nome,cpf)" + "VALUES(?,?,?)";

Já fiz e refiz variás vezes o código, mas o erro continua.
E ainda continuo com dúvida de como salvar no banco em tabelas com relacionamentos.
Obrigado pela ajuda.

para de usanr jdbc é limitado e complicado demais. Começa a usar bean de sessao para classe de entidades que melhora mtu sua vida!

espero ter ajudado, flwss

se vc fez o mapeamento dos relacionamentos corretos nao vai ter “erro” ao salvar em uma tabela, pois automaticamente vai afetar na outra. bem uma dica que dou é se está iniciando, esqueça relacionamentos por agora, na faculdade o assunto parece simples, mas no dia-dia, tem coisa que é bem chato de trabalhar e que dar uma dor de cabeça, e olha que isso acontece com quem ja ta programando por um tempo já. entao nao se prenda ao relacionamento e sim ao foco inicial de aprender a usar jdbc com java, caso esteja no inicio.

tem um post meu de como usar jdbc com java veja: http://camilolopes.wordpress.com/2009/04/23/inseridorecuperando-informacoes-mysql-com-java-eclipse/

flw.

[code]
public class JDBCClienteDao implements ClienteDao{

public void salvar(Cliente cli) {  
    Connection conn = PostgreSQL.getConnection();  
        try{  
           // Telefone tel = new Telefone();  
                      
            String sql = "Insert Into Cliente(codigo,nome,cpf)"; sql += "values( ? , ? , ? )";  

            PreparedStatement stmt = conn.prepareStatement(sql);  
            stmt.setInt(1, cli.getCodigo());  
            stmt.setString(2, cli.getNome());  
            stmt.setLong(3, cli.getCpf());  

            stmt.executeUpdate();  

              
        }catch(Exception e){  
            JOptionPane.showMessageDialog(null,"erro ao salvar" + e.getMessage());  

      }finally{  
        try {  
            conn.close();  
        } catch (SQLException ex) {  
            Logger.getLogger(JDBCClienteDao.class.getName()).log(Level.SEVERE, null, ex);  
        }  

        }  
}  [/code]

Assim que tem que estar o código para você inserir no banco utilizando sql simples, mas há outras formas de inserção por exemplo você podia criar as tabelas do seu banco em classes java e somente persisti-las usando JPA. è muito mais facil, e para tabelas com bastante colunas facilita sua vida.

Sendo ainda que há frameworks que fazem isso automaticamente sem nenhum stress.

poste o erro.

Obrigado pela ajuda pessoal. Consegui inserir dados na tabela.

Tenho 7 tabelas, todas as tabelas possuem a coluna id, e todas as classes possuem o atributo id.
A dúvida é a seguinte:

  • Tenho 07 tabelas. cada vez que insiro um cliente insiro o ID do cliente.
  • Cada vez que eu inserir um dado em outra tabela tambem vou inserir o ID?
    Sendo assim na minha aplicação, o úsuario vai ter que cadastrar 07 vezes o mesmo id para fazer o cadastro nas 07 tabelas?

Todas as tabelas estão relacionadas por PK e FK.

[quote] Anime
quiser baixe esta tb,eu gostei…

http://www.fabiosalvador.com.br/apostilas/apostilajava.pdf [/quote]

o cara é doidinho!!!
Mas a apostila parece que é boa

[quote]
fabio Salvador
Homem de preto, qual é a
sua missão?
É aprender logo Java e tirar
Certificação!?
Homem de preto, o que é
que você faz?
Escrevo um código fonte
que apavora o Satanás!?
[/quote]

abs
Donizete