包含以下主题:
SQLException概述
检索异常
检索警告
分类的SQLExceptions
SQLExceptions的其他子类
SQLException概述
当JDBC在与数据源交互期间遇到错误时,它会抛出SQLException的实例而不是Exception。SQLException实例包含以下信息,可帮助确定错误原因。
对错误的描述。SQLException.getMessage()方法可以获取一个该错误信息描述的String。
SQLState代码。SQLException.getSQLState()方法检索此代码。
错误代码。这是一个整数值,用于标识导致SQLException实例被抛出的错误。它的值和含义是特定实现的,也可能是底层数据源返回的实际错误代码。SQLException.getErrorCode()方法来检索错误。
原因。一个SQLException实例可能有一个因果关系,由一个或多个Throwable引起的对象SQLExcepiton实例抛出。要导航此原因链,请递归调用该方法SQLException.getCause()直到返回null值。
对任何链式异常的引用,如果发生多个错误,则通过此链引用异常。通过调用SQLException.getNextException()来检索这些抛出的异常。
检索异常
public static void printSQLException(SQLException ex) {
for (Throwable e : ex) {
if (e instanceof SQLException) {
if (ignoreSQLException(
((SQLException)e).
getSQLState()) == false) {
e.printStackTrace(System.err);
System.err.println("SQLState: " +
((SQLException)e).getSQLState());
System.err.println("Error Code: " +
((SQLException)e).getErrorCode());
System.err.println("Message: " + e.getMessage());
Throwable t = ex.getCause();
while(t != null) {
System.out.println("Cause: " + t);
t = t.getCause();
}
}
}
}
}
对异常进行处理
public static boolean ignoreSQLException(String sqlState) {
if (sqlState == null) {
System.out.println("The SQL state is not defined!");
return false;
}
// X0Y32: Jar file already exists in schema
if (sqlState.equalsIgnoreCase("X0Y32"))
return true;
// 42Y55: Table already exists in schema
if (sqlState.equalsIgnoreCase("42Y55"))
return true;
return false;
}
检索警告
SQLWarning对象是处理数据库访问警告的SQLException的一个子类。警告不会像异常那样停止执行应用程序,只是提醒用户某些事情没有按计划发生。
public static void getWarningsFromResultSet(ResultSet rs)
throws SQLException {
JDBCTutorialUtilities.printWarnings(rs.getWarnings());
}
public static void getWarningsFromStatement(Statement stmt)
throws SQLException {
JDBCTutorialUtilities.printWarnings(stmt.getWarnings());
}
public static void printWarnings(SQLWarning warning)
throws SQLException {
if (warning != null) {
System.out.println("\n---Warning---\n");
while (warning != null) {
System.out.println("Message: " + warning.getMessage());
System.out.println("SQLState: " + warning.getSQLState());
System.out.print("Vendor error code: ");
System.out.println(warning.getErrorCode());
System.out.println("");
warning = warning.getNextWarning();
}
}
- 汽车之家这个车真的除了便宜空间大,别的都是渣。 地盘渣避震渣操控渣,坐姿特奇葩,压根调不到一个舒服的位置,别谈什么舒适性了。开了几次卡罗...
- 为什么男生喜欢摸下面(男生为什么喜欢摸下面?)男生喜欢摸下面是一个普遍存在的现象,但是背后的原因却不是那么简单。本文将从几个方面来探讨为什么男生喜欢摸下面。 1. 生理需求 男性...
- 夭的组词大全(约50个) 夭的词语解释_夭是什么意思?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 夭的拼音 夭的解释 夭是什么意...
- [国足]世界杯预选赛:中国4-0马尔代夫 全场集锦北京时间3月24日,2018年世界杯亚洲区预选赛中国对阵马尔代夫,全场比赛结束,中国4-0战胜马尔代夫。 [国足]世界杯预选赛:中国4-0马尔代夫 ...
- 猫眼电影怎么选座位 猫眼电影在线选座教程【详解】现在很多朋友去看电影都是先在网上将票定好,到时候直接去电影院取票。这样既避免了买不到票的问题,也大大降低了购票的价格。 说到网上...
- 安装Windows Server IIS的详细步骤:图文讲解,跟着步骤来,确保安装的IIS服务可以正常的使用。【安装IIS】 - 详细解析(转载)今日突然接到任务,需要发布WebApi到一台服务器上面,结果上面没有安装IIS...... 好吧,那就自己动手了,通过自己的不懈努力,终于在网上找到...
- 女星馨子的老公是谁 揭秘两人的结缘故事星八卦>八卦>女星馨子的老公是谁 揭秘两人的结缘故事女星馨子的老公是谁 揭秘两人的结缘故事2016-01-08 16:00来源:据说娱乐 分类: 八卦收藏 ...
- 飞天茅台存放几年口感最好,飞天茅台放几年最值钱2008年飞天茅台出厂之前已经到了多少年 年。茅台酒从开始酿制到出厂飞天茅台存放几年口感最好,需要经过五年飞天茅台存放几年口感最好的...
- 英雄苏烈的真实历史形象:大唐二代战神,灭亡三个国家的绝世猛将苏定方堪称唐朝前期的传奇将领,一生东征西讨,从黄沙漫天的大漠到惊涛骇浪的黄海,战线纵横近万里,一边是中亚咸海,平葱岭,征西突厥...
- 机器人的六大核心功能:自主移动、感知环境、决策控制、人机交互、学习适应与协同工作机器人具备的功能 随着科技的飞速发展,机器人已经成为了我们生活中不可或缺的一部分。从家庭助手到工业生产,机器人在各个领域都发挥着...