Salvar no Banco usando JDBC. [RESOLVIDO]

13 respostas
Maureli

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.

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) {

    }


}
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?

13 Respostas

Anime

Oi,

Baixe as apostilas,vai ajuda-lo…

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

sandokandias

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

acesse o capítulo sobre JDBC.

Maureli

Oi,

Baixe as apostilas,vai ajuda-lo…

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

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

Anime

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!

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

            }
    }

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

ViniGodoy

A linha do INSER deveria ser assim:

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

Maureli

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.

C

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

LPJava

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.

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

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.

H

poste o erro.

Maureli

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.

Donizete_Luiz

Anime
quiser baixe esta tb,eu gostei…

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

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


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

abs
Donizete

Criado 2 de fevereiro de 2011
Ultima resposta 6 de fev. de 2011
Respostas 13
Participantes 9