Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách xử lý ngoại lệ khi thêm tên người dùng trùng lặp vào cơ sở dữ liệu trong ứng dụng Spring mvc

Bạn chỉ đang xử lý MySQLIntegrityConstraintViolationException chứ không phải các ngoại lệ khác:NestedServletException và DuplicateKeyException và do đó bạn đang nhận được stacktrace và try / catch của bạn không hoạt động.

BTW, Tại sao không chỉ cần tạo một phương thức bổ sung để kiểm tra xem tên người dùng đã có chưa và nếu có thì hiển thị thông báo lỗi nếu không hãy thêm người dùng.

class UserRepositoryImpl implements UserRepository{
    //.....
    public int isUsernameExist(String username){
        String sql = "SELECT COUNT(*) FROM users WHERE username=?";
        return jdbcTemplate.queryForObject(sql, new Object[] { username }, String.class);
    }
    //....
}

@RequestMapping(value="/register", method=RequestMethod.POST)
public String processRegisterUser(@ModelAttribute("user") User user, BindingResult result){
    int status = userRepository.isUserExist(user.getUsername());
    if(status==1){
        //Username exist... redirect and display error msg.
    } else {
        userRepository.addUser(user);
    }
    //.....
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn bản ghi dựa trên meta

  2. Cột BLOB / TEXT 'giá trị' được sử dụng trong đặc tả khóa không có độ dài khóa

  3. java.lang.ClassNotFoundException:com.mysql.jdbc.Driver trong thời gian chạy (eclipse / maven / tomcat)

  4. Tìm kiếm người dùng tốt hơn PHP / MySQL

  5. SQLAlchemy DELETE Lỗi gây ra do có cả lười tải VÀ phiên bản động của cùng một mối quan hệ