本文整理自网络,侵删。
1. SQLException 的概述
当使用 JDBC 与数据源(在本文中的数据源表示我们实际使用的数据库)进行交互的时候遇见错误的时候,将会抛出名为 SQLException 的异常。一个 SQLException 的异常里面包含以下信息,用于帮助我们更好的定位错误。
错误表示:
使用 getMessage 方法便可以获取。
SQLState 代码
代码有五位的字母和数字组成 。多数的代码由 ISO/ANSI 和 Open Group(X/Open) 标准化,但是仍然存在部分的代码由数据库提供商自行实现。
使用 getSQLState 方法便可以获取。
错误代码
与 SQLState 不同,错误代码是由数据库提供商自行定义的整数值,存在是由基础数据源返回的实际错误代码的可能。
使用 getErrorCode 方法便可以获取。
错误原因
表示引发异常的原因,通过不断调用 getCause 方法可以获取异常发生的底层原因。
异常链
如果出现多个错误,则通过此链引用异常。
使用 getNextException 方法便可以获取。
2. SQLException的示例
public static void printSQLException(SQLException e){ 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"); } // 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 true; }
说明:上面的代码取自 [http:docs.oracle.com] (http://docs.oracle.com/javase/tutorial/jdbc/basics/sqlexception.html)。
相关阅读 >>
sql server 索引结构及其使用(一)--深入浅出理解索引结构第24页
sql server中row_number函数的常见用法示例详解
更多相关阅读请进入《sql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。