Número de valores da consulta e campos de destino não coincidem

2 respostas
adailton_cardoso

Boa tarde! Pessoal,

Preciso da ajuda de vocês.
Estou voltando a fazer alguns programas em Java mais tem algumas coisas que está me deixando maluquinho. Estou tentando gravar algumas informações e esta dando esse erro aqui (Número de valores da consulta e campos de destino não coincidem) o erro acontece no insert (+"’,’"+codigoDepto+ “’,’” ) será que alguém pode me ajudar nessa
Já tendei de tudo mais não consegui achar o erro por favor me ajudem.

segue o código abaixo:

private void btn_ConfirmarActionPerformed(java.awt.event.ActionEvent evt) {

boolean tudoOk; 
     tudoOk = ValidaCampos(); 
     String ok = "nao"; 


                   if(!tudoOk == true){ 

                   MudaCor(); 

                           ContatoEmpresa contEmp = new ContatoEmpresa(); 


                           contEmp.setCodigo_empresa(Integer.parseInt(tf_Codigo_Empresa.getText())); 
                           contEmp.setNome_contato(tf_NomeContato.getText()); 
                           contEmp.setTelefone_contato(tf_Telefone.getText()); 
                           contEmp.setFax_contato(tf_Fax.getText()); 
                           contEmp.setCelular_contato(tf_Celular.getText()); 
                           contEmp.setId_nextel(tf_NexTel.getText()); 
                           contEmp.setEmail1_contato(tf_Email1.getText()); 
                           contEmp.setEmail2_contato(tf_Email2.getText()); 
                           contEmp.setProd_compra(tfa_Informacao.getText()); 
                           contEmp.setDepartamento("" + cbo_Depto.getSelectedItem()); 


                     ok = con_Contato.cadastraContato(contEmp); 

                        if(ok.equals("sim")){ 
                                               JOptionPane.showMessageDialog(null, "Cadastro Realizado com Sucesso", 
                                                "Cadastro", JOptionPane.PLAIN_MESSAGE);

}

}

public String cadastraContato(ContatoEmpresa contEmp ){

String sql = ""; 
                 String ok = "nao"; 
                 abreConexao(); 

                 int codigoDepto = 0; 
                 int cod = 0; 


     try{ 
          sql = "SELECT * FROM TBDEPARTAMENTO WHERE DEPTO='"+contEmp.getDepartamento()+"'"; 

          st = cn.prepareStatement(sql); 
          resultset = st.executeQuery(); 

     while(resultset.next()){ 

                   codigoDepto = resultset.getInt("ID_DEPTO"); 
    }

}

catch(SQLException e){ 

                 JOptionPane.showMessageDialog(null, 
                "Ocorreu o seguinte erro:\n " + e.toString(), 
                 "Erro", JOptionPane.ERROR_MESSAGE);

}

try{ 

                      sql = "SELECT * FROM TBCONTATO WHERE ID_CONTATO="+ contEmp.getCodigo_contato(); 

                      st = cn.prepareStatement(sql);	
                     resultset = st.executeQuery(); 



                     while(resultset.next()){ 
                    cod = resultset.getInt("ID_CONTATO"); 

   } 

            if(cod != 0){ 

                        JOptionPane.showMessageDialog(null, 
                        "Esse Codigo pertence a outro Contato", 
                        "Aviso", JOptionPane.ERROR_MESSAGE); 

                         ok = "mesmo";

}

else{ 


                           sql = "INSERT INTO TBCONTATO" 
                          + "(Id_Empresa,Nome, Telefone, Fax, " 
                          + "Celular, Nextel, Email1," 
                          + "Email2, linha_Compra, Id_Depto ) VALUES " 

                          +"('" +contEmp.getCodigo_empresa() 
                          +"','"+contEmp.getNome_contato() 
                          +"','"+contEmp.getTelefone_contato() 
                          +"','"+contEmp.getFax_contato() 
                          +"','"+contEmp.getCelular_contato() 
                          +"','"+contEmp.getId_nextel() 
                          +"','"+contEmp.getEmail1_contato() 
                          +"','"+contEmp.getEmail2_contato() 
                          +"','"+contEmp.getProd_compra() 
                          +"','"+codigoDepto+ "','" 
                          +"');"; 

          st = cn.prepareStatement(sql); 
          st.executeUpdate(); 
                    
          ok = "sim";

}
}

catch(SQLException e){ 

                    JOptionPane.showMessageDialog(null, 
                    "Ocorreu o seguinte erro:\n " + e.toString(), 
                   "Erro", JOptionPane.ERROR_MESSAGE); 
            }	
                    fechaConexao(); 
                    return(ok);

}
}

2 Respostas

vtr002

Cara seu insert vai dar pau, as Strings não estão com Quot
ou seja sem o apostrofo.
Usa o PreparedStatment e set tudo por parametro que é melhor

Edit:Ignora a parte do sem apostrofo, mas seu código ta ruim de ver assim, usa o PreaparedStatment para não ter erro

charleston10

Primeiro [color=red]USE A TAG CODE[/color]

E outra tente padronizar seu cadastro,
use classes diferentes para cada tipo de ação, assim fica bagunçado..
Cadastro em java é feito com PrepareStatement desse modo vc só vai ter dor de cabeça.

try{        
    // cria um preparedStatement    
    PreparedStatement stmt = con.prepareStatement("insert into contatos (nome,email,endereco) values (?,?,?)");    
    
    // preenche os valores    
    stmt.setString(1, classe.getNome());    
    stmt.setString(2, classe.getEmail());    
    stmt.setString(3, classe.getEndereco());    
    
    // executa    
    stmt.execute();    
    stmt.close();    
    
    System.out.println("Gravado!");    
    
    con.close();    
    
} catch (SQLException e) {    
     e.printStackTrace();    
}
Criado 30 de novembro de 2012
Ultima resposta 30 de nov. de 2012
Respostas 2
Participantes 3