Cordiais saudações, pessoal do GUJ.
Estou praticando manipulação de cadastro. E agora surgiram algumas dúvidas. Já fiz um cinco programas de manutenção de cadastro mas o problema só me ocorreu agora. E o problema são as primary keys.
Fiz cadastro de cliente, cadastro de fornecedor, cadastro de produtos, cadastro de categorias, cadastro… vários cadastros, enfim. Mas só me ocorreu agora e toda vez que tento cadastrar um item que possui cadastro recebo a mensagem abaixo:
Preciso alterar a rotina de inclusão dos cadastros (todos) para fazer uma busca e verificar se existe id igual, os ids não são auto-incrementados, porque os id tem um significado de acordo com seu número.
Meus programas tem basicamente uma classe DAO para cada cadastro, e uma GuiCadastro que coleta os dados através de JTextField. Existe também uma classe DB que abre a conexão e uma classe que contém os campos dos cadastros. Onde digo cadastro entendam tabelas de um banco de dados, que por acaso se chama empresa.
Parece que a modificação deve ser feita na classe DAO, da seguinte forma: toda vez que mando incluir um registro ele faz uma busca na tabela e se existir um registro com primary key igual ele deve me mostrar uma mensagem e voltar para o campo codigo (chave).
Estou com dúvida sobre qual resposta o sistema me dá para eu saber que ele encontrou um registro com a chave que eu pretendia cadastrar.
Veja as linhas que pretendo acrescentar na minha classe DAO, no local de inclusão de registros:
sql = "select * from clientes where id_cgc_cpf = ?";
try {
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cliente.getId_cgc_cpf());
resultSet = statement.executeQuery();
...
Agora, depois de fazer a busca, como eu sei que ele encontrou um registro, ou não encontrou. Se ele não encontrou nenhum registro com a chave dada, então ele deve fazer o seguinte insert:
sql = "insert into clientes values (?, ?, ?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?)";
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cliente.getId_cgc_cpf());
statement.setString(2, cliente.getFisica_juridica());
statement.setString(3, cliente.getNome_razao());
statement.setString(4, cliente.getEmail());
statement.setString(5, cliente.getTelefone());
statement.setString(6, cliente.getCep());
statement.setString(7, cliente.getEndereco());
statement.setString(8, cliente.getNumero());
statement.setString(9, cliente.getComplemento());
statement.setString(10, cliente.getBairro());
statement.setString(11, cliente.getCidade());
statement.setString(12, cliente.getEstado());
statement.setString(13, cliente.getData_cadastro());
Então, pessoal, eu pergunto: o que está faltando para eu testar se ele encontrou ou não o registro com a chave que pretendo cadastrar? Isto depois da linha resultSet = statement.executeQuery();.
Eu gostaria que alguém escreve-se o if para testar se encontrou ou não registro e caso tenha encontrado deve ser retornado return false;.
Atenciosamente,
Ronaldo