package com.github.walker.easydb.exception; /** * <p> * Locator of database error, it translates the error code of Oracle into * unified error errMsg. * </p> * * @author HuQingmiao */ public class OracleErrorLocator extends ErrorLocator { public String getErrorMsg(int errorCode) { String errMsg = DataAccessException.UNKNOW_ERROR; switch (errorCode) { case 17002:// 连接不到数据库 errMsg = DataAccessException.DB_CONNECT_FAILED; break; case 1017: // 用户名/口令错误 errMsg = DataAccessException.USERNAME_PASSWORD_ERROR; break; case 923: // 找不到FROM关键字 case 933: // SQL出现语法错误 errMsg = DataAccessException.SQL_SYNTAX_ERROR; break; case 1: // 违反唯一约束 errMsg = DataAccessException.DISOBEY_UNIQUE; break; case 942: // 表或视图不存在 errMsg = DataAccessException.TABLE_NOT_EXIST; break; case 904: // 列名不存在 errMsg = DataAccessException.COLUMN_NOT_EXIST; break; case 1438: // 数值超过处理精度 errMsg = DataAccessException.VALUE_EXCEED_PRECISION; break; case 1401: // 插入的值对于列过大 case 17070: errMsg = DataAccessException.VALUE_EXCEED_BOUND; break; case 1722: // 无效数字 errMsg = DataAccessException.INVALID_NUMBER; break; case 1858: case 1847: case 1861:// 无效的日期或时间 errMsg = DataAccessException.INVALID_DATE; break; case 1400: case 1407:// 违反非空约束 errMsg = DataAccessException.DISOBEY_NOTNULL; break; case 1008:// 并非所有变量都已关联,参数值比'?'多或少! errMsg = DataAccessException.NOT_ALL_VARIABLE_RELATED; break; case 17003:// 批量操作时, 某组参数的值比'?'多! errMsg = DataAccessException.BATCH_PARAM_MORE; break; case 17041:// 批量操作时, 某组参数的值比'?'少! errMsg = DataAccessException.BATCH_PARAM_LESS; break; case 17104:// 要执行的 SQL 语句不得为空白或空值! errMsg = DataAccessException.SQL_CANNOT_NULL; break; } return errMsg; } }