Erro insert

seghinte tenho minha classe para conexao
package percistencia;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Postgre {

private static Connection conexao;

public void finalize() {
try {
conexao.close();
} catch (Exception e) {}
}

public static Connection getConexao() {
return getConexao("localhost", 5432, "postgres", "postgres", "1234");
}

public static Connection getConexao(String ip, int porta, String banco, 
String user, String senha) {
try {
if (conexao != null && !conexao.isClosed()) {
return conexao;
}

String url = "jdbc:postgresql://" + ip + ":" + porta + "/" + banco;
Class.forName("org.postgresql.Driver");
conexao = DriverManager.getConnection(url, user, senha);
return conexao;
} catch (SQLException ex) {
System.out.println("Erro ao conectar: " + ex.getMessage());
System.exit(1);
} catch (ClassNotFoundException ex) {
System.out.println("Driver JDBC não encontrado, consulte o manual.");
System.exit(1);
}
return null;
}

public static void main(String[] args) {
try {
Connection c = Postgre.getConexao();
DatabaseMetaData meta = c.getMetaData();
System.out.println("Banco usado: " + meta.getDatabaseProductName());
System.out.println("Versão: " + meta.getDatabaseProductVersion());
System.out.println("Driver: " + meta.getDriverName() + " - " 
+ meta.getDriverVersion());
} catch (SQLException sQLException) {
}
}
}




classe DAO

=====================================================================================================
package percistencia;
import modelo.Cliente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ClienteDao {

private Connection getConexao() {
return Postgre.getConexao();
}

public void inserir(Cliente cli) {
String sql = "INSERT INTO Cliente ( Nome_Cliente, Cpf_Cliente, Estado_Cliente, " +
"Data_Cliente) VALUES (?,?,?,?)";
try {
PreparedStatement stmt = getConexao().prepareStatement(sql);

stmt.setString(2, cli.getNome_Cliente());
stmt.setString(3, cli.getCpf_Cliente());
stmt.setString(4, cli.getEstado_Cliente());
stmt.setDate(5, new java.sql.Date(cli.getData_Cliente().getTime()));
stmt.executeUpdate();
} catch (SQLException sQLException) {
System.out.println("Erro ao inserir Pessoa." + sQLException.getMessage());
}

}

}

=====================================================================================================

package modelo;
import excecoes.excessao;
import java.util.Date;

public class Cliente {

private String Cpf_Cliente;
private String Nome_Cliente;
private Date Data_Cliente;
private String Estado_Cliente;

public Cliente() {

Cpf_Cliente = "";
Nome_Cliente = "";
Data_Cliente = null;
Estado_Cliente = "";

}


public String getCpf_Cliente() {
return Cpf_Cliente;
}


public void setCpf_Cliente(String Cpf_Cliente) throws excessao {
if(Cpf_Cliente == null || Cpf_Cliente.length() != 11)
throw new excessao("CPF inválido");

this.Cpf_Cliente = Cpf_Cliente;
}

public Date getData_Cliente() {
return Data_Cliente;
}

public void setData_Cliente(Date Data_Cliente) {
this.Data_Cliente = Data_Cliente;
}

public String getEstado_Cliente() {
return Estado_Cliente;
}

public void setEstado_Cliente(String Estado_Cliente) {
this.Estado_Cliente = Estado_Cliente;
}

public String getNome_Cliente() {
return Nome_Cliente;
}

public void setNome_Cliente(String Nome_Cliente) {
this.Nome_Cliente = Nome_Cliente;
}

}
=====================================================================================================
package apresentacao;


import excecoes.excessao;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import modelo.Cliente;
import percistencia.ClienteDao;

public class CadastrarCliente extends javax.swing.JDialog {

private Cliente cli;



/** Creates new form FormPessoa */
public CadastrarCliente(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
cli = new Cliente();
}

public CadastrarCliente(java.awt.Frame parent, boolean modal, Cliente cli) {
this(parent, modal);
this.cli = cli;
// mostrarDados();
cli = new Cliente();
}


private void jSalvarActionPerformed(java.awt.event.ActionEvent evt) { 
try {

cli.setNome_Cliente(jtfNome_Cliente.getText());
cli.setEstado_Cliente(jtfEstado_Cliente.getText());
cli.setData_Cliente(SimpleDateFormat.getDateInstance().parse(jtfData_Cliente.getText()));
cli.setCpf_Cliente(Integer.parseInt(jtfCpf_Cliente.getText()));

ClienteDao.inserir(cli);
this.dispose();


} catch (excessao ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), 
"Erro", JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
Logger.getLogger(CadastrarCliente.class.getName()).log(Level.SEVERE, "Deu erro", ex);



} catch (ParseException ex) {
JOptionPane.showMessageDialog(this, "Formato da Data incorreto", 
"Erro", JOptionPane.ERROR_MESSAGE);


} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(this, "O campo matrícula deve ser numérico", 
"Erro", JOptionPane.ERROR_MESSAGE);
}
} 

private void jSairActionPerformed(java.awt.event.ActionEvent evt) { 
this.dispose();
} 


da erro 
cli.setCpf_Cliente(Integer.parseInt(jtfCpf_Cliente.getText()));

C:\teste\src\apresentacao\CadastrarCliente.java:159: setCpf_Cliente(java.lang.String) in modelo.Cliente cannot be applied to (int)


ClienteDao.inserir(cli);

C:\teste\src\apresentacao\CadastrarCliente.java:161: non-static method inserir(modelo.Cliente) cannot be referenced from a static context

alguem ajuda ai valeu

De primeira mao posso apenas te aconselhar a mudar o nome do teu pacote de “percistencia” para “persistencia” (só pra vc nao passar vergonha) sempre é bom ter um portugues correto no nosso codigo.

Agora o seu erro é o seguinte:

na linha 159 vc nao pode passar um inteiro como parametro visto que sua classe Cliente pede uma String para setCpf_Cliente, ou seja, vc nao deve usar o Integer.parseInt como vc ta fazendo.

na linha 161 está dizendo que voce ta tentando chamar um metodo de instancia em um metodo statico. E isso nao é permitido uma vez que métodos estáticos nao podem acessar variaveis ou metodos de instancia (tudo q nao é estatico) diretamente, a nao ser que vc crie uma instancia dela. Entendeu?

entende eu entendi mas nao sei como fazer beleza

Você pode inserir seu codigo entre as tags na mensagem pra eu te dizer a linha que voce vai ter que mudar

cara tenho que da umm parseInt porque seguinte no cpf se o cara digita 14785as2541

entendeu uma lentra no meio dos numeros ira gerar erro no parseInt e eu presiso que seje somente numeros e nao lentras entendeu

[quote=fabiodurgante]cara tenho que da umm parseInt porque seguinte no cpf se o cara digita 14785as2541

entendeu uma lentra no meio dos numeros ira gerar erro no parseInt e eu presiso que seje somente numeros e nao lentras entendeu[/quote]

Nesse caso você tem 2 opções: Ou você faz a validacao do cpf usando o Integer.parseInt antes da chamada do metodo setCpf_Cliente e passa como parametro o cpf como String normal; ou você altera sua Classe Cliente e tudo que for relacionado ao cpf_Cliente você troca de String para int.

e a instancia ???

Você deve alterar esta parte do seu código na classe CadastrarCliente:

ClienteDao.inserir(cli);   

Para isto:

ClienteDao clienteD= new ClienteDao();
clienteD.inserir(cli);

Espero ter ajudado. E nao se esqueça de tratar o Integer.parseInt antes da chamada do metodo de alterar CPF