Change method using Java and SQL

1

I need to make a change in SQL using Java, but I ended up losing my logic when calling and returning to change. Here's the code outline.

Here is Main , where the user informs the CPF that he wants to change:

static private void alterarCliente(Connection con) throws SQLException
{
    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();
    cli.AlterarCliente(cli, con);
}

Here is where you should pull the data of the CPF informed and make the change:

public void AlterarCliente(Cliente cli, Connection con) throws SQLException{
    String sql = null;
    PreparedStatement stmt;
}

And this is where I got lost, because the AlteraCliente() method should make the CPF search informed and return all the data (from that CPF) to be changed.

    
asked by anonymous 23.05.2014 / 13:22

1 answer

3

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.

    
23.05.2014 / 13:56