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