关键词不能为空

当前您在: 主页 > 英语 >

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访问数据库异常的处理方法的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文