`

数据库约束的验证问题

阅读更多
很多时候在添加记录的时候都会存在数据是否唯一的情况,如果挨个的用dwr验证会非常的麻烦,工作量也很大。以前一直没发现什么好方法应对这种方式,今天才发现原来可以通过spring抛出的异常来解决这个问题。代码如下:
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = null;
		try {
			out = response.getWriter();
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
		    if(userId==""||userId==null){
		      ....//增加操作
		    }else {
		      ....//修改操作
		    }
		} catch (DataIntegrityViolationException e) {// 唯一约束
			e.printStackTrace();
			out.print("<script>" + "alert('编码已存在,请重新输入。');" + "history.go(-1);"
					+ "</script>");
			return null;
		}

DataIntegrityViolationException代表"唯一性约束","不能插入空值","完整性约束失败"抛出的异常。
当然,上面代码虽然从思路上说是方便了,但代码还是相当的复杂,每个控制器几乎都要写很多重复的代码,就算通过继续能解决部分问题,那也得费不少的力气,而且用起来还是不太方便,后来想想,何不通过将抛出的异常进行统一的处理呢?于是就有了更简单的方法了:
在spring mvc的XXX-servlet.xml中加入以下处理异常的代码:
<bean id="exceptionResolver" class="com.adtech.e2qframe.core.define.BaseMappingExceptionResolver">
		<property name="defaultErrorView" value="/error/error.jsp" />
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.Exception">/error/error.jsp</prop>
				<prop key="org.springframework.dao.DataIntegrityViolationException">/error/unique.jsp</prop>
			</props>
		</property>
	</bean>


unique.jsp代码:
<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" %>

<script>
alert('编码已存在,请重新输入。');
history.go(-1);
</script>

在控制器中只需要把异常抛出来即可:
	public ModelAndView save(HttpServletRequest request,
			HttpServletResponse response) throws DataIntegrityViolationException,Exception {
...........
if(userId==""||userId==null){
		      ....//增加操作
		    }else {
		      ....//修改操作
		    }
......

这种方式更简洁,没有多余的代码,非常不错了。
这种方式不用先单独建立查询语句判断数据是否存在,用起来确实简便不少。
分享到:
评论
1 楼 joseph1985 2012-11-29  
有多个字段时怎么知道是哪个字段重复了?

相关推荐

    Ruby-Rein让ActiveRecord支持数据库约束

    标题 "Ruby-Rein让ActiveRecord支持数据库约束" 暗示了一个关于Ruby开发中的一个库,名为Rein,它的目标是增强ActiveRecord的功能,使其能够更好地处理数据库约束。ActiveRecord是Ruby on Rails框架中用于对象关系...

    Oracle数据库的完整性约束规则详解

    Check约束用于验证数据列的值是否满足特定的条件,如数值范围、字符集等。这种约束可以确保表中的数据遵循业务规则,例如性别只能是'M'(男性)或'F'(女性)。Check约束不能包含对其他表的引用或调用系统函数如...

    完整性约束验证实验.doc

    数据库实验 完整性约束的相关验证

    基于java的登录验证系统(JSP)使用Sql数据库

    1. **设计数据库模型**:确定用户表结构,包括字段类型和约束。 2. **编写JSP页面**:创建登录界面,处理登录请求,并实现错误跳转。 3. **实现Java后端逻辑**:编写Servlet或JSP动作,处理用户提交的数据,进行...

    数据库完整性与安全性试验

    Check/触发器约束验证是指对数据库中的check约束和触发器进行验证和测试。例如,验证check约束的正确性和有效性,观察触发器的影响。 数据库安全性 数据库安全性是指数据库中数据的安全和保护。它涉及到用户身份...

    数据库系统之实体完整性约束.pdf

    数据库完整性是确保数据库中数据准确、有效和一致的重要机制,主要分为实体完整性、参照完整性和用户定义...在实际操作中,应根据具体需求选择合适的约束类型,并进行适当的验证和测试,以确保数据库的完整性和可靠性。

    MySQL数据库表约束机制解析与实战案例分享

    内容概要:本文档详细介绍了MySQL表的各种约束及其应用,包括空属性(NULL/NOT NULL)、默认值(DEFAULT)、注释...在遇到复杂场景时,可以通过建立简单的测试环境来验证不同的约束效果,从而达到更好的学习效果。

    Oracle数据库的完整性约束和序列规则详解

    然而,Check约束不能涉及其他行或表,也不能直接使用系统函数,如SYSDATE、UID、USER或USERENV,若需要此类复杂的验证,可以使用触发器代替。 NOT NULL约束则强制指定列不允许有NULL值,确保列中每一行都有数据。在...

    数据库验证

    8. **安全性**: 虽然这个示例关注的是数据库验证,但安全问题同样重要。应避免SQL注入攻击,对用户输入进行适当的验证和清理。另外,敏感信息(如密码)应加密存储,且不应在Ajax请求中明文传输。 9. **性能优化**:...

    database_consistency:查找模型架构和数据库约束之间不一致的工具

    数据库一致性 该项目的主要目标是提供一种简便的方法来检查数据库约束与应用程序验证的一致性。 目前,我们可以: 查找缺少的空约束( ) 查找缺少的长度验证( ) 查找缺少的状态验证( ) 查找缺少的唯一性验证( ...

    php注册登录验证模块-附带数据库使用说明

    数据库使用说明可能涵盖了如何创建用户表,表的结构(如字段名、数据类型和约束),以及如何执行SQL查询来与PHP脚本交互。例如,创建用户表的SQL语句可能是这样的: ```sql CREATE TABLE users ( id INT AUTO_...

    SQL Server 2014数据库项目案例教程习题参考答案

    本资源是一个关于 SQL Server 2014 数据库项目案例教程习题参考答案的集合,涵盖了数据库设计、E-R 图、关系模型、SQL Server 2014 数据库管理系统、身份验证、数据完整性、约束等多方面的知识点。 数据库设计 在...

    ch08数据库的安全与完整性约束1

    数据库安全不仅关注技术层面,如防止非法访问,还包括法律、法规和道德层面的保密问题。安全数据库或可信数据库是指能够满足网络环境下的安全要求,提供不同安全级别的数据库访问规范。 8.1.2 DBMS的安全机制 1. *...

    数据库课后习题答案(第四版).pdf

    在实验中,创建了名为`S_T`的数据库,并在其中创建了`student`、`course`和`sc`三个表,每个表可能包含了如主键、外键、唯一性约束等不同类型的约束,以保证数据的完整性和一致性。 【数据输入与查询】 在创建的表...

    数据库技术与应用 用户自定义约束-D习题与作业.doc

    4. **触发器**(Triggers):这是一种特殊类型的用户自定义约束,它在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时执行一段预定义的SQL代码,用于执行更复杂的业务逻辑验证。 在使用SQL Server Management ...

    数据库+hrms oracle数据库

    为了保证数据一致性,可以利用数据库的约束条件,如主键、外键和唯一性约束。 文件名"testh"可能代表测试数据或配置文件,这在部署和维护HRMS系统时是必不可少的。测试数据用于模拟真实环境,验证系统功能和性能,...

    西工大数据库实验三

    规则是指在数据库中指定的某种约束或限制,而默认对象是指在数据库中指定的默认值。我们学习了如何使用 SQL 语言创建、验证和删除规则和默认对象,从而掌握了数据库的完整性和安全性控制。 通过本实验,我们掌握了...

    MySQL数据库:数据库实施运行和维护.pptx

    一旦部分数据加载到数据库,就可以进行联合调试或数据库试运行,以验证应用程序的功能是否符合预期。 3. **数据库试运行**:在应用程序开发和调试完成后,数据库系统可以开始试运行。在这个阶段,系统会处理实际的...

    数据库原理及应用实验一(创建数据库和表)

    - **掌握SQL Server Management Studio管理数据库的方法**:能够使用该工具进行数据库的创建、查看、验证、修改、分离和附加等操作。 - **理解数据库及其物理文件的结构关系**:明确数据库内部逻辑结构与外部物理...

    数据库迁移检查清单

    该清单涵盖了数据库结构、表、存储过程、用户定义的函数、视图、索引、触发器、约束、规则、默认设置、游标、临时表、内置函数、系统变量、其他等多个方面。 数据库结构检查包括: * 验证和确认来源数据库中的所有...

Global site tag (gtag.js) - Google Analytics