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

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

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

SQL 错误: ORA-00001: 违反唯一约束条件 (BK.PK_TUSER)

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

我们可以通过在底层抛出异常,到UI层处理的方式来解决。

首先在dao层抛出异常:

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

	}

在biz层继续上抛

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

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

	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();
		}		
	}

这样就获取到了主键冲突的异常,可以进行我们的相应处理了,比之前把所有的异常一股脑儿都打印出来要好一些。

转载于:https://my.oschina.net/u/1465239/blog/835766

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值