2013-06-18 2 views
0

У меня есть этот рабочий код/​​подготовленный оператор, который добавляет имя пользователя и пароль в базу данных, однако мне нужно проверить, существует ли в коде имя пользователя.Проверка наличия пользователя в Oracle Database - java jdbc

public void addUser(Connection conn, PreparedStatement pstmnt, String username, String password) 
    { 
     try 
     { 
      pstmnt = conn.prepareStatement("insert into users values (?,?,?)"); 
      pstmnt.setInt(1, 0); 
      pstmnt.setString(2, username); 
      pstmnt.setString(3, password); 
      pstmnt.executeUpdate(); 
     } 
     catch (SQLException e) { System.out.println("Error: " + e.getMessage()); } 

     System.out.println(username + " has been added"); 
    } 

Есть ли простой способ сделать это?

+1

Использование ограничения 'unique' в базе данных не работает? –

+0

Что говорит @UwePlonus - просто применяйте ограничение на уровне базы данных. Это первичный ключ. – fge

ответ

0

Если не существует много повторяющегося ключевого риска, вы можете просто попробовать и проверить код ошибки, если он соответствует «dup key error» (Error ORA-00001).

Иначе вы должны заблокировать всю таблицу, проверьте ключ существования, обновление и затем зафиксировать (которые высвобождают замок)

1

Вы можете добавить уникальное ограничение в БД и обработать исключение в AddUser соответственно

+0

+1, это лучшее решение. Например, с помощью оператора 'ALTER TABLE users ADD CONSTRAINT users_uq_name UNIQUE (имя пользователя);' –

Смежные вопросы