First let's solve one thing.
cli.CustomClient (cli, con); This does not make sense, I'm getting as a parameter myself.
Another question, separate what is Persistence from the rest of your system, but if you want something simpler you can do it as follows.
static private void alterarCliente(Connection con) {
String nome, sexo, rua, bairro, cidade, complemento, tipo;
String cpf, rg, cep, numero, telefone;
Scanner s = new Scanner(System.in);
Cliente cli = new Cliente();
System.out.println("Informe o CPF do usuario a ser alterado:");
cli.cpf = s.next();
//Aqui você precisará preencher todas as propriedades do seu objeto cli.
//em vez de fazer cli.cpf cli.nome de uma estudada sobre gets e sets.
if (cli.updateCliente(con)) {
System.out.println("Alterado com sucesso");
} else {
System.out.println("Não foi possível alterar");
}
}
Now let's get the data.
public void buscaCliente(Connection con) throws SQLException {
String sql = "SELECT * FROM cliente WHERE cpf = ?";
PreparedStatement stmt = con.preparedStatement(sql);
stmt.setString(1, cpf);
ResultSet rs = stmt.execute();
rs.next();
nome = rs.getString("nome"); // aqui você coloca a propriedade que vai receber a informação e a coluna na bd como parametro.
sexo = rs.getString("sexo");
... (Segue a mesma logica para todos os campos menos o CPF)
}
Now let's change the same.
public boolean UpdateCliente(Connection con) throws SQLException{
String sql = "UPDATE clientes SET nome = ?, sexo = ?, rua = ?, bairro = ?, cidade = ? (Segue a mesma logica para todos os campos menos o CPF) WHERE cpf = ?";
PreparedStatement stmt = con.preparedStatement(sql);
stmt.setString(1, nome);
stmt.setString(2, sexo);
... (Segue a mesma logica)
stmt.setString(X, cpf); //no lugar do x coloca a posição do ? lembrando que começa no 1... Exemplo o nome é a ? numero 1, sexo é ? numero 2 e assim vai.
return stmt.executeUpdate() > 0; //Aqui já faz o update na tabela e verifica se conseguiu ou não retornando true ou false.
}
Some important remarks.
This way you lose most OO functions.
Look for Gets and Sets, as well as separate the logical part, the views and the persistence.