从 Java 对象类型到 SQL 类型的标准映射是在哪里定义的?

seb*_*ckm 5 java sql jdbc

JDBC 文档setObject中我发现了这样一句话:

JDBC 规范指定了从 Java 对象类型到 SQL 类型的标准映射。

但是,我找不到定义此映射的位置。我找到的就是这个。但这仅指定 SQL 类型和 JDBC 类型之间的映射。但我不明白如何从 JDBC 类型转换为 Java 类型。

更具体地说,我想知道这段代码是否保证永远不会抛出InvalidCastException

int type = resultSet.getMetadata().getColumnType(1);
if (type == Types.LONGNVARCHAR || type == Types.CHAR) {
    String abc = (String)resultSet.getObject(1);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它是人们所期望的非常直观的String,但还有许多其他 SQL 类型我没有这样的直觉。

我只是找不到一个表格来告诉我可以根据常量的知识安全地执行哪些转换java.sql.Types

man*_*uti 5

您可以在此处下载 JDBC 的官方规范(由于您链接到 Java 8 文档,因此该规范适用于 JDBC 版本 4.2)。具体见附录表B-3。

对于 JDBC 类型CHARLONGNVARCHAR,Java 类型确实如此,String因此您的转换是安全的。