1、简介
当JDBC在与数据源交互期间遇到错误时,它将抛出SQLException实例,而不是Exception。
SQLException 实例包含以下信息,可以帮助您确定错误原因:
1、error 的描述: 调用方法SQLException.getMessage检索包含此描述的String对象。
2、SQLState 代码: 这些代码及其各自的含义已由 ISO/ANSI 和 Open Group (X/Open) 进行了标准化,另外还有些代码留给数据库供应商自己定义。 此String对象由五个字母数字字符组成。 通过调用方法 SQLException.getSQLState 检索此代码。
3、错误代码: 这是一个整数值,用于标识导致引发SQLException实例的错误。 它的值和含义是特定于实现的,并且可能是基础数据源返回的实际错误代码。 通过调用方法SQLException.getErrorCode检索错误。
4、原因: SQLException 实例可能具有因果关系,该因果关系由导致抛出SQLException实例的一个或多个Throwable对象组成。要获取这一系列原因信息,要递归调用方法SQLException.getCause 获取,直到返回空值。
5、对任何链接的异常的引用: 如果发生多个错误,则可以通过该异常引用链获取异常。 通过对引发的异常调用方法 SQLException.getNextException 来检索这些异常。
2、异常(Exceptions)
下面我们编写一个通用方法来检索SQLException中包含的SQLState,错误代码,错误描述和原因(如果有的话)以及与其链接的任何其他异常:
private static String sql = "select id,name,email,country,password from Userswhere id=1";
public static void main(String[] args) {
// Step 1: 创建连接对象 connection
try (Connection connection = DriverManager.getConnection