SQLException 通过 getSQLState() 获取标准 SQLSTATE 码(如"23505"),跨数据库通用;getErrorCode() 返回厂商特定整数码(如 MySQL 1062);getMessage() 用于日志排查;需用 getNextException() 遍历异常链。
在 Java 中,SQLException 提供了标准方法获取数据库错误码,但具体含义和可用性取决于底层 JDBC 驱动和数据库厂商。
这是最通用、跨数据库的方式,返回 5 位字符串(如 "23505"),遵循 SQL 标准(SQLSTATE)。多数主流驱动(PostgreSQL、H2、Derby)都支持,MySQL 8.0+ 也已支持。
"23505",外键违约为 "23503")e.getSQLState(),其中 e 是捕获的 SQLException
null 或占位符(如 "00000"),需实测验证返回整数,由具体数据库定义(如 MySQL 的 1062 表示重复键,PostgreSQL 的 0 常表示无厂商码)。该值意义完全依赖数据库文档。
1062 = “Duplicate entry”)getSQLState()
1 对应 ORA-00001)e.getMessage() 或 e.toString() 包含驱动生成的可读提示,常含 SQLSTATE 和厂商码(如 PostgreSQL 报错中会同时出现 SQLSTATE: 23505 和 ERROR: duplicate key value violates unique constraint)。
立即学习“Java免费学习笔记(深入)”;
某些数据库操作(如批处理、存储过程)可能抛出多个嵌套异常,需用 getNextException() 遍历:
getSQLState() 和 getErrorCode()
SQLException 链,避免只捕获第一个错误而遗漏根本原因