Повторяющееся поле при обновлении базы данных - Java - PullRequest
0 голосов
/ 06 мая 2020

У меня есть следующее SQL:

CREATE TABLE clientes (
    nombre VARCHAR(20) NOT NULL,
    apellidos VARCHAR(50) NOT NULL,
    dni VARCHAR(9) PRIMARY KEY NOT NULL,
    telefono VARCHAR(9) NOT NULL,
    direccion VARCHAR(50) NOT NULL,
    ciudad VARCHAR(50) NOT NULL,
    email VARCHAR(60) NOT NULL UNIQUE
);

Моя проблема в поле «электронная почта».

Ну, у меня . java файл, в котором я могу обновить данные клиента . Например, для clientA, у которого есть адрес электронной почты clientea@gmail.com, я хочу изменить номер телефона с 111222333 на 333222111. Почему бы вам не разрешить мне это сделать и не сказать, что «Этот адрес электронной почты УЖЕ присутствует в повестке дня», когда я обновляю ЖЕ САМЫЙ клиент, а не добавляю другого клиента с этим адресом электронной почты? Принимая во внимание этот 111222333 не может быть использован позже ни одним клиентом.

1.- Нужно ли мне сохранять все электронные письма и все телефоны, чтобы они НЕ повторялись в ДРУГИХ клиентах?

I покажет вам код ОБНОВЛЕНИЕ :

private void button_OKActionPerformed(java.awt.event.ActionEvent evt) {                                          
        //Atributos generales para el cliente.
        String nombre = textfield_nombre.getText();
        String apellidos = textfield_apellidos.getText();
        String DNI = (String) jComboBox_DNIs.getSelectedItem();
        String telefono = textfield_telefono.getText();
        String direccion = textfield_direccion.getText();
        String ciudad = textfield_ciudad.getText();
        String email = textfield_email.getText();

        //Comprobamos que están todos los datos insertados...
        if (!textfield_email.getText().trim().isEmpty() && !textfield_telefono.getText().trim().isEmpty() && !textfield_direccion.getText().trim().isEmpty() 
            && !textfield_ciudad.getText().trim().isEmpty()) {
            if(!isTelefono(textfield_telefono.getText())){
                JOptionPane.showMessageDialog(null, "¡El teléfono debe contener 9 dígitos!", "ADMINISTRADOR", JOptionPane.WARNING_MESSAGE);
                textfield_telefono.requestFocus();
            }else if(!isEmail(textfield_email.getText())){
                JOptionPane.showMessageDialog(null, "¡Formato de email incorrecto!", "ADMINISTRADOR", JOptionPane.WARNING_MESSAGE);
                textfield_email.requestFocus();
            }else if(Conexiones.cargar_email().contains(textfield_email.getText())){
                JOptionPane.showMessageDialog(null, "¡Este email YA existe en la agenda!", "ADMINISTRADOR", JOptionPane.WARNING_MESSAGE);
                textfield_email.requestFocus();
            }else{
                Cliente cliente = new Cliente(nombre, apellidos, DNI, telefono, direccion, ciudad, email);
                //Llamamos al método modificar_cliente() para modificar el cliente en la base de datos.
                Conexiones.modificar_cliente(cliente);
                dispose();
            }
        } else {
            JOptionPane.showMessageDialog(null, "¡Debes rellenar TODOS los campos!", "ADMINISTRADOR", JOptionPane.WARNING_MESSAGE);
            textfield_telefono.requestFocus();
            textfield_telefono.setBackground(Color.decode("0xB4FF48"));
        }
    }

modificar_cliente ():

public static void modificar_cliente(Cliente cliente){
        String bbdd = Conexiones.bbdd;
        Connection c = (Connection) Conexiones.conexion_a_BBDD(bbdd);
        Statement stm;
        ResultSet rs;
        try{
            //Preparamos la consulta a realizar...
            stm = c.createStatement();
            //Consulta para modificar un cliente en la base de datos.
            String modificar_clientes = " UPDATE clientes "
                    + " SET nombre = '"+cliente.getNombre()+"', apellidos = '"+cliente.getApellidos()+"', "
                    + " DNI = '"+cliente.getDNI()+"', telefono = '"+cliente.getTelefono()+"', "
                    + " direccion = '"+cliente.getDireccion()+"', ciudad = '"+cliente.getCiudad()+"', "
                    + " email = '"+cliente.getEmail()+"' WHERE DNI = '"+cliente.getDNI()+"';";

            int resultado1 = 1;
            //System.out.println(modificar_clientes);
            resultado1 = stm.executeUpdate(modificar_clientes);
            if(resultado1<=0){
                throw new SQLException();
            }else{
                //System.out.println("Cliente modificado en la tabla clientes.");
            }
            JOptionPane.showMessageDialog(null, "Modificación realizada con éxito.");
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(Conexiones.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

cargar_email ():

public static ArrayList cargar_email() {
        ArrayList<String> emails = new ArrayList<String>();
        String bbdd = Conexiones.bbdd;
        Connection c = (Connection) Conexiones.conexion_a_BBDD(bbdd);
        Statement stm;
        ResultSet rs;
        try {
            //Consulta para sacar todos los emails de la tabla "clientes".
            stm = c.createStatement();
            String consulta_emails = "SELECT email FROM clientes ORDER BY email ASC";
            rs = stm.executeQuery(consulta_emails);
            //System.out.println("CONSULTA TODOS LOS emails: Mostramos todos los emails de la tabla 'clientes'.");
            int i = 0;
            while (rs.next()) {
                String email = rs.getString("email");
                emails.add(email);
                i++;
            }
            //System.out.println(emails);
            c.close();
        } catch (SQLException e) {
            //e.printStackTrace();
            System.out.println("Ha habido un error.");
        }     
        return emails;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...