Как игнорировать добавление дублированного номера телефона в таблицу mysql в java

public void registration() throws ClassNotFoundException, SQLException {
    System.out.println("Do you want to register to pay advance in online type yes or  no");
    boolean flag = false;
    Set <String> pNumber = new HashSet <String>();
    String input = scan.next();
    if (input.equalsIgnoreCase("Yes")) {
        System.out.println("Enter your name");
        String name = scan.next();
        System.out.println("Enter password");
        String pWord = scan.next();
        System.out.println("Re-enter password");
        String reEnter = scan.next();
        if (pWord.equals(reEnter)) {
            String confirm = reEnter;
            System.out.println("Your password created successfully");
            System.out.println("Enter your phone number");
            String phoneNumber = scan.next();
            Connection conn = null;
            PreparedStatement ps = null;
            ResultSet rs = null;
            conn = MansionDBConnect.getConnection();
            String queryTwo = "select phone_number from registration";
            ps = conn.prepareStatement(queryTwo);
            rs = ps.executeQuery();
            while (rs.next()) {
                pNumber.add(rs.getString(1));
                //System.out.println(rs.getString(1));
            }
            System.out.println(pNumber.size());
            for (int i = 0; i < pNumber.size(); i++) {
                if (pNumber.contains(phoneNumber)) {
                    System.out.println("Already number registered");
                    //pNumber.remove(phoneNumber);
                    System.out.println(pNumber);
                    flag = true;
                    break;
                }
            }
            if (pNumber.equals(phoneNumber)) {
                System.out.println("Already number registered");
            }
            String query = "insert into registration (username,password,phone_number)values(?,?,?)";
            ps = conn.prepareStatement(query);
            ps.setString(1, name);
            ps.setString(2, confirm);
            ps.setString(3, phoneNumber);
            ps.executeUpdate();
            System.out.println("Your record created successfully try login");
        } else {
            System.out.println("password mismatch found try again");
        }
    } else {
        System.out.println("For more details please call us");
    }
}

Я пытаюсь игнорировать пользователя, registration()если пользователь с тем же номером мобильного телефона уже существует. Я могу найти, существует ли он, но после этого остальная часть кода должна быть выполнена. Но queryпродолжает выполняться. Какое условие необходимо добавить?

java,mysql,

-2

Ответов: 3


0 принят

Просто используйте то, flagчто вы использовали, чтобы определить, существует ли запись:

if(!flag) {
   //put here the insert statement
} 

1

Лучшим подходом здесь, вероятно, является добавление индекса phone_number в registrationстолбец в вашей таблице:ALTER TABLE registration ADD UNIQUE (phone_number);

try {
    String query = "insert into registration (username, password, phone_number) values(?,?,?)";
    ps = conn.prepareStatement(query);
    ps.setString(1, name);
    ps.setString(2, confirm);
    ps.setString(3, phoneNumber);
    ps.executeUpdate();
}
catch (SQLIntegrityConstraintViolationException e) {
    System.out.println("Already number registered");
}

При наличии уникального индекса вставки с использованием дублированного номера телефона должны вызывать исключение, которое вы можете поймать и обработать:

UNIQUE

0

Во-первых, я бы сказал, что вы должны убедиться, что добавили UNIQUEв свой номер телефона в своей базе данных MySql:

ALTER TABLE registration ADD UNIQUE (phone_number);

Также замените эту строку:

String queryTwo = "select phone_number from registration";

в

String queryTwo = "select phone_number from registration where phone_number = '" + phoneNumber + "'";

выполните проверку, если какая-либо строка будет возвращена.

Удачи.

Java, MySQL,
Похожие вопросы