(RESOLVIDO) ERRO ao inserir em banco de Dados

Boa tarde pessoal!

Estou com um erro ao inserir um dado no banco de Dados!

a conexão foi bem sucedida mas está acusando este erro, alguém pode me ajudar??

Códigos:

public class ClienteDAO {
     private Connection conn;
     private Conexao conexao;
     
     // criação do construtor da classe
     // o construtuor da classe é executado automaticamente sempre que um 
     // novo objeto é criado 
    public ClienteDAO () {
        this.conexao = new Conexao ();
        this.conn = this.conexao.getConexao ();
    }
   
    public void cadastrar (Cliente cliente) {
     
        String sql = "INSERT INTO Cliente (Nome, Endereco, Cep, Cidade, Telefone,Email)  VALUES "
                + "(?, ?, ? , ? , ? , ?)"; 
       
        try {
            PreparedStatement stmt = this.conn.prepareStatement("sql");
            stmt.setString  (0, cliente.getNome ());
            stmt.setString  (1, cliente.getEndereco ());
            stmt.setString  (2, cliente.getCidade ());
            stmt.setString  (3, cliente.getTelefone ());
            stmt.setString  (4, cliente.getEmail ());
            stmt.execute ();
            
           System.out.println ("Salvo com Sucesso");
            
        } catch (Exception ex) {
           System.out.println ( "Erro ao inserir Cliente" + ex);
        }
    }   
    
}

A classe de Conexão:

public class Conexao {
  
    public static Connection getConexao(){
    
        try {
            // tentar estabelecer a conexao
           Connection con =  DriverManager.getConnection (
                    "jdbc:mysql://localhost:3306/cadastroclientes?serverTimezone=UTC", //  linha de conexao
                    "root", // usuario mysql
                    ""  // senha do mysql
           ); 
           return con;
     
        } catch (Exception ex) {
            // se ocorrer erro na hora de conectar-se
          System.err.print ("Erro na conexão" + ex.getMessage());
          return null;
        }  
    }
   
}

O código do botão no jframe:

private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        
        String nome = campoNome.getText ();
        String endereco = campoEndereco.getText ();
        String cep = campoCep.getText ();
        String cidade = campoCidade.getText ();
        String telefone = campoTelefone.getText ();
        String email = campoEmail.getText ();
        
        Cliente cliente = new Cliente ();
        cliente.setNome(nome);
        cliente.setEndereco(endereco);
        cliente.setCep(cep);
        cliente.setCidade(cidade);
        cliente.setTelefone(telefone);
        cliente.setEmail(email);
        
        ClienteDAO clienteDao = new ClienteDAO ();
        clienteDao.cadastrar(cliente);
        
    }             

O erro apresentado:

Após fazer a postagem vi que faltava um parametro na classe ClienteDAO

mas ainda sim colocando-o apresenta o seguinte erro:

No PreparedStatement, os índices começam com 1

obrigado pela resposta! alterei mas continua aparecendo agora o seguinte ero:

Na classe DAO a consulta está sendo preparada assim:

PreparedStatement stmt = this.conn.prepareStatement("sql"); // vc passou a string "sql" em vez da variável sql

e acho que deveria ser:

PreparedStatement stmt = this.conn.prepareStatement(sql);

obrigado! o erro desapareceu, mas agora surgiu um novo…
dizendo que a tabela não existe, mas existe …

alguma luz?

O nome da tabela é clientes, com s no final. Você está usando Cliente no código.

2 curtidas

Muito obrigada! Problema resolvido!

1 curtida