数据库教程:JDBC探索之SQLException解析分享

1.SQLException的概述

当使用JDBC与数据源(在本文中的数据源表示我们实际使用的数据库)进行交互的时候遇见错误的时候,将会抛出名为SQLException的异常。一个SQLException的异常里面包含以下信息,用于帮助我们更好的定位错误。

错误表示:

使用getMessage方法便可以获取。

SQLState代码

代码有五位的字母和数字组成。多数的代码由ISO/ANSI和OpenGroup(X/Open)标准化,但是仍然存在部分的代码由数据库提供商自行实现。

使用getSQLState方法便可以获取。

错误代码

与SQLState不同,错误代码是由数据库提供商自行定义的整数值,存在是由基础数据源返回的实际错误代码的可能。

使用getErrorCode方法便可以获取。

错误原因

表示引发异常的原因,通过不断调用getCause方法可以获取异常发生的底层原因。

异常链

如果出现多个错误,则通过此链引用异常。

使用getNextException方法便可以获取。

2.SQLException的示例

publicstaticvoidprintSQLException(SQLExceptione){ for(Throwablee:ex){ if(einstanceofSQLException){ if(ignoreSQLException(((SQLException)e).getSQLState())==false){ e.printStackTrace(System.err); System.err.println("SQLState:"+((SQLException)e).getSQLState()); System.err.println("ErrorCode:"+((SQLException)e).getErrorCode()); System.err.println("Message:"+e.getMessage()); Throwablet=ex.getCause(); while(t!=null){ System.out.println("Cause:"+t); t=t.getCause(); } } } } } publicstaticbooleanignoreSQLException(StringsqlState){ if(sqlState==null){ System.out.println("TheSQLstateisnotdefined"); } //X0Y32:Jarfilealreadyexistsinschema if(sqlState.equalsIgnoreCase("X0Y32")){ returntrue; } //42Y55:Tablealreadyexistsinschema if(sqlState.equalsIgnoreCase("42Y55")){ returntrue; } returntrue; }

说明:上面的代码取自[http:docs.oracle.com](https://docs.oracle.com/javase/tutorial/jdbc/basics/sqlexception.html)。

3.SQLWarning

SQLWarning是SQLException的一个非常重要的子类,用于表示数据库访问时出现的警告。作为异常,SQLWarning不会停止执行应用程序,而是提醒用户没有按计划发生任何事情。比如,警告有可能会通知你尝试撤销的某个权限没有成功,或者通知你在请求断开的时间可能发生错误。

SQLWarning有可能被Connection、Statement(包括PreparedStatement和CallableStatement)或ResultSet报告,这些类都存在getWarnings方法,通过调用该方法才能看到调用对象上报告的第一个警告。如果getWarning返回一个警告,我们可以调用其getNextWarning方法获取下一个警告。每执行一行语句,那么前面那行语句的警告将会清除,这意味着如果我们想要检索报告处理来的警告,那么必须在下一行语句执行之前检索。

DataTruncation是最常见的警告,其SQLState代码均为01004,表示在读取和写入数据的时候存在问题。DataTruncation有很多方法可以帮助我们去理解哪个列或参数数据被截断,截断是在读取还是写入操作,应该传输多少字节以及实际传输的字节数。

4.其他类型的SQLException

BatchUpdateException:在批处理更新操作期间发生错误时,将引发除了所提供的信息,提供的更新计数被处死之前出现了错误的所有语句。

SQLClientInfoException:当无法在连接上设置一个或多个客户端信息属性时引发。除了所提供的信息,也提供了不设置的客户端信息属性的列表。

soon…

上述就是数据库技术:JDBC探索之SQLException解析分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/914641.html

(0)
上一篇 2021年10月29日
下一篇 2021年10月29日

精彩推荐