经过异常来提示发生主键冲突

进行数据库操做,老是会遇到各类各样的异常,如何获得反馈,并给用户友好的提示须要作一番功夫。java

好比说若是用户输入了一个已经存在的用户名(主键)的话,下层会返回sql异常:sql

SQL 错误: ORA-00001: 违反惟一约束条件 (BK.PK_TUSER)数据库

相似这样。异常类为SQLIntegrityConstraintViolationException,能够经过api查看这个类,主要是违反完整性约束(foreign key, primary key or unique key)时会出现。SQLState的值为23.api

咱们能够经过在底层抛出异常,到UI层处理的方式来解决。ui

首先在dao层抛出异常:code

public void addUser(User user) throws SQLIntegrityConstraintViolationException,Exception {

	}

在biz层继续上抛get

public void addUser(User user) throws SQLIntegrityConstraintViolationException,Exception {
		UserDao dao = new UserDao();
		dao.addUser(user);		
	}

在ui层获取异常,进行提示it

public static void addUserTest(){
		UserBiz biz = new UserBiz();
		User user = new User();
		user.setUname("jack2");
		user.setPwd("123");
		user.setRole(IRole.VIP);
		try {
			biz.addUser(user);	
			System.out.println(user.getUname() + "添加成功");
		} catch (SQLIntegrityConstraintViolationException e) {	

		//这里获取异常,这是一个示范代码,可是我以为不须要判断value为23000,这个名字就已经肯定了这个值
			if(e.getSQLState().equals("23000")){
				System.out.println("用户名已经存在,请从新输入");	
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

这样就获取到了主键冲突的异常,能够进行咱们的相应处理了,比以前把全部的异常一古脑儿都打印出来要好一些。io

相关文章
相关标签/搜索