Erro ao tentar Salvar no BD

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:

Parte do Codigo do botao salvar:

[code]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);
    }[/code]

Obs: o Banco de dados é do Access.

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.

[quote=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.[/quote]
Olha como ta minha tabela:

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.

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

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