Erro ao tentar Salvar no BD

5 respostas
B

Olá gente, gostaria de saber se algum de vc6 conseguem me tirar essa duvida,
o que ta acontecendo é o seguinte: quando eu executo esse formulario e clico para adcionar um novo cliente,preencho todos os dados,ate ai tudo bem,porem, quando eu clico para salvar da esse erro:

java.sql.SQLException:[Microsoft][Driver ODBC Microsoft Acess]Tipo de dados imcompativel na expressao de criterio.
Parte do Codigo do botao salvar:
try
        {
            String sqlinsert ="insert into cliente " +
                    "(nome,logradouro,numero,complemento,bairro,cidade," +
                    "cep,RG,CPF,FoneRes,FoneCom,FoneCel,Email,DataNascimento," +
                    "DataCadastro,Observacao,foto) values ('"+
                         tf_nome.getText()+"','"+
                         tf_codLog.getText()+"','"+
                         tf_numero.getText()+"','"+
                         tf_complemento.getText()+"','"+
                         tf_codBairro.getText()+"','"+
                         tf_codCidade.getText()+"','"+
                         tf_cep.getText()+"','"+
                         tf_rg.getText()+"','"+
                         tf_cpf.getText()+"','"+
                         tf_foneRes.getText()+"','"+
                         tf_foneCom.getText()+"','"+
                         tf_foneCel.getText()+"','"+
                         tf_email.getText()+"','"+             
                         tf_dataNasc.getText()+"','"+
                         tf_dataCadastro.getText()+"','"+
                         tf_obs.getText()+"','"+
                         tf_foto.getText()+"')";
            con_cliente.statement.executeUpdate(sqlinsert);
            JOptionPane.showMessageDialog(null,"Gravação Realizada Com Sucesso");

           
            con_cliente.executeSQL("Select * from cliente order by "+ordenacao);
            atualiza_combo_box_cliente();
            con_cliente.resultset.first(); 
            mostrar_dados(); 
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Erro ao tentar Gravar o Registro..."+erro);
        }

Obs: o Banco de dados é do Access.

5 Respostas

C_io_Hoepers

as colunas da tabela cliente na base sao todas para receber string ?
caso tenha alguma que seja para receber um int, ou qualquer outro valor q nao seja strring, vc precisa converter antes de mandar na sql.

B

C?io Hoepers:
as colunas da tabela cliente na base sao todas para receber string ?
caso tenha alguma que seja para receber um int, ou qualquer outro valor q nao seja strring, vc precisa converter antes de mandar na sql.

Olha como ta minha tabela:

C_io_Hoepers

String sqlinsert =“insert into cliente " +
“(nome,logradouro,numero,complemento,bairro,cidade,” +
“cep,RG,CPF,FoneRes,FoneCom,FoneCel,Email,DataNascimento,” +
“DataCadastro,Observacao,foto) values (’”+
tf_nome.getText()+”’,"+
Integer.parseInt(tf_codLog.getText())+",’"+
tf_numero.getText()+"’,’"+
tf_complemento.getText()+"’,"+
Integer.parseInt(tf_codBairro.getText())+","+
Integer.parseInt(tf_codCidade.getText())+",’"+
tf_cep.getText()+"’,’"+
tf_rg.getText()+"’,’"+
tf_cpf.getText()+"’,’"+
tf_foneRes.getText()+"’,’"+
tf_foneCom.getText()+"’,’"+
tf_foneCel.getText()+"’,’"+
tf_email.getText()+"’,’"+
tf_dataNasc.getText()+"’,’"+
tf_dataCadastro.getText()+"’,’"+
tf_obs.getText()+"’,’"+
tf_foto.getText()+"’)";

la nos campo que sao “Numero” vc deve fazer a conversao para enviar um inteiro.
e nos campos que sao data/hora vc precisa enviar um tipo Date. talves a variavel tf_dataNasc tenha um metodo .getDate() para retornar a data. e se caso nao tiver vc precisa utilizar um SimpleDateFormat para formatar a data.

otaviojava

Recomendo que vc use o preparestatment
Ele vai te ajudar no dialogo com o banco.
Setando as informações legais no banco bastanto apenas setar o tipo da variaável do banco
Vc pode setar String, int, double etc.
Veja o exemplo:

PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES   SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00);
   pstmt.setInt(2, 110592);
romarcio

Com certeza vc deveria usar preparestatment como o amigo otaviojava citou.
Trabalhar com aquele monte de aspinha é pedir para se torturar.

Criado 8 de janeiro de 2011
Ultima resposta 8 de jan. de 2011
Respostas 5
Participantes 4