Inserir Banco

6 respostas
A

Pessoal pesquisei sobre banco, Dao e acabei achando um conteudo bacana, agora quero estou fazendo uns teste mas deu erro e gostaria de saber qual o erro:

Codigo DaoConexão:

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class ConexaoBanco {  
     
  Connection con;
  PreparedStatement pstmt;
  
    public void abrirBanco()throws Exception{
    
    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://127.0.0.1:3306/estoque";
    String user = "root";
    String password = "root";
    con = DriverManager.getConnection(url, user, password);
}
    public void fecharBanco()throws Exception{
    
        if(con != null)
            con.close();
        if(pstmt != null)
            pstmt.close();
            
    }   

}

Codigo Dao inserir:

public class ClienteDao extends ConexaoBanco {  
  
    public void Gravar(Cliente p)throws Exception{
        
       abrirBanco(); 
       pstmt = con.prepareStatement("insert into clientes values(null,?,?,?,?)");
       pstmt.setInt(1, p.getCodigo());
       pstmt.setString(2, p.getNome());
       pstmt.setString(3, p.getCidade());
       pstmt.setString(4, p.getSexo());
       pstmt.execute();
       fecharBanco();
       
    }
}

Codigo inserir:

try{
      Scanner sc = new Scanner (System.in);
      Cliente p = new Cliente();
      ClienteDao pd = new ClienteDao();
          
          System.out.printf("Digite seu Codigo:");
          p.setCodigo(sc.radix());   
          System.out.printf("Digite seu Nome: ");
          p.setNome(sc.nextLine());  
          System.out.printf("Digite sua Cidade: ");
          p.setCidade(sc.nextLine()); 
          System.out.printf("Digite seu Sexo:");
          p.setSexo(sc.nextLine()); 
          pd.Gravar(p);
            
      }catch(Exception e){
      
          System.out.println("Erro:"+e.getMessage());
                                 
      }

Como falei sou novo vou pegando conteudo e lendo enfim, estou utilizando o metodo Scanner. tenho que usar para inserir dados em String o parametro p.setSexo(sc.nextLine()); e para valores inteiros???
erro:

Digite seu Codigo:Digite seu Nome: marco           // pode perceber que nesta linha não deixou eu inserir o Codigo, pulou e foi direto para o Nome
Digite sua Cidade: 
Digite seu Sexo:
Erro:Column count doesn't match value count at row 1 //erro

Eai pessoal por que este erro???
Quero aprender.

6 Respostas

A

Pessoal fiz assim achei melhor, mas mesmo assim ficando dando o erro como se eu tivesse digitado algo errado , ou deixado em branco

Erro: Erro:Column count doesn’t match value count at row 1

Codido alterado:

try{
    
      Cliente pessoa = new Cliente();
      ClienteDao pd = new ClienteDao();
            
      pessoa.setCodigo(20);  
      pessoa.setNome("Marco Aurelio Antunes");  
      pessoa.setCidade("Franco da Rocha");  
      pessoa.setSexo("M");                         
      pd.Gravar(pessoa);
            
      }catch(Exception e){
      
          System.out.println("Erro:"+e.getMessage());
                                 
      }
d34d_d3v1l

Olá,

cara, primeira coisa, pq o primeiro atributo está como null?

Outra coisa, geralmente quando a gente faz um insert, a gente não sabe qual o ID, pois é o banco quem geralmente gerencia (autoincrement, ou serial no postgresql)…
então:

está meio estranho…

A

Mas, eu posso colocar o codigo manualmente?

então em relação ao null como eu falei fico navegando e pegando exemplos, então como ficaria o ´codigo então?

e como ficaria o autoincrement?

Obrigado!!!

A

Consegui rsrrsrs, vocÊ me ajudou pacas, só foi eu tirar o valor null deste do campo inserir valeu mesmo vou postar o codigo caso alguem tenha duvida.

Antes:

public class ClienteDao extends ConexaoBanco {    
    
    public void Gravar(Cliente p)throws Exception{  
          
       abrirBanco();   
       pstmt = con.prepareStatement("insert into clientes values(null,?,?,?,?)");  
       pstmt.setInt(1, p.getCodigo());  
       pstmt.setString(2, p.getNome());  
       pstmt.setString(3, p.getCidade());  
       pstmt.setString(4, p.getSexo());  
       pstmt.execute();  
       fecharBanco();  
         
    }  
}

Depois:

public class ClienteDao extends ConexaoBanco {    
    
    public void Gravar(Cliente p)throws Exception{  
          
       abrirBanco();   
       pstmt = con.prepareStatement("insert into clientes values(?,?,?,?)");  
       pstmt.setInt(1, p.getCodigo());  
       pstmt.setString(2, p.getNome());  
       pstmt.setString(3, p.getCidade());  
       pstmt.setString(4, p.getSexo());  
       pstmt.execute();  
       fecharBanco();  
         
    }  
}
A

o bacana de tirar as duvidas aqui no fórum é que vocês são muito atenciosos e mais aprendemos a boa prática de programar, eu não sabia usar TableModel, fazer a classe Dao e hoje aprendi a fazer, mas estou aprendendo aos poucos a usar, muito obrigado a todos que tem paciência com as pessoas que vem aqui no fórum aprender , porque ajudar e ensinar é:

[B]“ENSINAR É APRENDER 2 VEZES”[/B]

PESSOAL QUE ME AJUDA SEMPRE:

Vini , Leandro Paiva, e agora o d34d_d3v1l Obrigado!!!

d34d_d3v1l

Fico feliz que gosta aqui do fórum.
Eu também sou muito ajudado.

E por isso gosto de ajudar também.

Bom,
se o seu problema foi resolvido,
que tal colocar [resolvido] no titulo do post?
abraço cara

Criado 11 de março de 2012
Ultima resposta 11 de mar. de 2012
Respostas 6
Participantes 2