經過異常來提示發生主鍵衝突

進行數據庫操做,老是會遇到各類各樣的異常,如何獲得反饋,並給用戶友好的提示須要作一番功夫。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

相關文章
相關標籤/搜索