关键词不能为空

当前您在: 主页 > 英语 >

Spring访问数据库异常的处理方法

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-06 02:18
tags:

-

2021年2月6日发(作者:米斯特)


Spring


访问数据库异常的处理方法



来源


: Javaeye


博客



发布时间


: 2011-01-22 20:45


阅读


: 134




原文链接



全屏阅读




[


收藏


]




编辑点评:


天我们将谈谈

< p>
Spring


访问数据库异常的处理方法,使用


J DBC API


时,很多操作都要声明抛


eption


异常,通常情况下是要制定异常处理策略。





使用


JDBC API


时,很多操作都 要声明抛出


eption


异常,通常情况


下是要制定异常处理策略。



Spring

< br>的


JDBC


模块为我们提供了一套异常处理机制,


这套


异常系统的基类是


DataAccess Exception


,它是


RuntimeException


的一种类型,那么


就不用强制去捕捉异常了,

< br>Spring


的异常体系如下:







目前为止我们还没有明确地处理


Spring



JDBC


模块的异常。


要理解它的 异常处理机


制,我们来做几个测试。看下面的测试代码:




1.


public



void


insert(


final


Vehicle vehicle) {


2. String sql =


3. (ID,PLATE,CHASSIS,COLOR,WHEEL,SEAT) values


4. (:id,:plate,:chassis,:color,:whee l,:seat)


5. SqlParameterSource parameterSource =


new


BeanPropert


ySqlParameterSource(


6. vehicle);


7. getSimpleJdbcTemplate().update(sql, parameterSourc


e);


8. }


9.


public



void


insert(


final


Vehicle vehicle) {


10. String sql =


IS,COLOR,WHEEL,SEAT)


11. values(:id,:plate,:chassis,:color,:wheel,:seat)


12. SqlParameterSource parameterSource =


new


BeanPro


pertySqlParameterSource(


13. vehicle);


14. getSimpleJdbcTemplate().update(sql, parameterSou


rce);


15. }




public



static



void


main(String[] args) {



ApplicationContext ctx =


new


ClassPathXmlApplicationC


ontext(




VehicleDAO vehicleDAO = (VehicleDAO) n(


icleDAO


Vehicle vehicle =


new


Vehicle(



B-000000


01


(1);


(vehicle);


}



public



static



void


main(String[] args) {


ApplicationContext ctx =


new


ClassPathXmlApplicationC


ontext(




VehicleDAO vehicleDAO = (VehicleDAO) n(


icleDAO


Vehicle vehicle =


new


Vehicle(



B-000000


01


(1);


(vehicle);


}





修改


SQL


语句,不使用自增主键的特 性,并在这里设置重复的主键,那么运行程序,


就会报出字段重复的异常。下面来捕捉这 个异常:



1.


try


{


2. (vehicle);


3. }


catch


(DataAccessException e) {


4. SQLException sqle = (SQLException) se();



5. n(


e());


6. n(


());


7. }


8.


try


{


9. (vehicle);


10. }


catch


(DataAccessException e) {


11. SQLException sqle = (SQLException) se


();


12. n(


rrorCode());


13. n(


LState());


14. }





此 时,我们就可以获得错误码和


SQL


状态(不同的数据库系统会 有不同):






关于


HSQL


数据库的错误码可以到



类中查看,只要注意运行结果


会有一个负号,


而类中定义的是没有负号的。


这 样就知道了这个错误的具体含义,


比如


104

< br>:


唯一约束验证失败。这就是我们故意设置的重复主键问题。




Spring



JDBC


模块为我们预定义了一些错误代码,它存 储在


t


包下的



文件中,其中描述


HSQL


的内容为:



1. bean id=


class

< br>=


SQLErrorCodes


2. property name=


3. valueHSQL Database Engine/value


4. /property


5. property name=


6. value-22,-28/value


7. /property


8. property name=


9. value-104/value


10. /property


11. property name=


12. value-9/value


13. /property


14. property name=


15. value-80/value


16. /property


17. /bean


18. bean id=


class


=


orC odes


19. property name=


20. valueHSQL Database Engine/value


21. /property


22. property name=


23. value-22,-28/value


24. /property


25. property name=


26. value-104/value


27. /property


28. property name=


29. value-9/value


30. /property


31. property name=


32. value-80/value


33. /property


34. /bean





其余数据库的错误码内容也可以从 这个文件之中获得。


下面我们来看看如何自定义异常


处理。上面 我们已经知道在


t


包下有



文件,



Spring


启动 时会自动读取这个文件中的错误码,


它为我们


预分类了一些错误 码,而我们可以加强它,来使用我们自定义的异常。


首先,定义一个异常


类,我们就来自定义一下前面的


-104


错误,就是< /p>


HSQL


的重复键的问题:



1.


package


ion;


2.


import


tegrityViolationEx


ception;


3.


public



class


VehicleDuplicateKeyException


extends



4. DataIntegrityViolationException {


5.


public


VehicleDuplicateKeyException(String msg) {



6.


super


(msg);


7. }


8.


public


VehicleDuplicateKeyException(String msg, Thro


wable cause) {


9.


super


(msg, cause);


10. }


11. }


12.


package


ion;


13.


import


tegrityViolationE


xception;


14.


public



class


VehicleDuplicateKeyException


extends



15. DataIntegrityViolationException {


16.


public


VehicleDuplicateKeyException(String msg) {


17.


super


(msg);


18. }


19.


public


VehicleDuplicateKeyException(String msg, Thr


owable cause) {


20.


super


(msg, cause);

-


-


-


-


-


-


-


-



本文更新与2021-02-06 02:18,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/604844.html

Spring访问数据库异常的处理方法的相关文章