如何使用 JDBC 正确地将 oracle 数据类型转换为 java 类型?

How to properly convert oracle data types to java types using JDBC?

我需要知道 JDBC 结果集中列的数据类型。

我能够得到 JDBC types,它们是从 Oracle 类型生成的:

ResultSet rs = databaseMetaData.getColumns(null, "C##TMPUSER", null, null);
rs.next();
int code = rs.getInt(5);
String sqlJavaType = JDBCType.valueOf(code).getName();

例如 returns NUMERIC 如果 oracle 中的列是 NUMBER.

这是java sql Type,但我需要相应的Java类型,例如Stringintfloat

如何获取这些数据类型?

检查从 ResultSet's getObject(i) 方法返回的对象的 class:

Class<?> javaColumnType = rs.getObject(n).getClass();

适用于所有列类型。

请注意,如果该列包含 null,对 getClass() 的调用将抛出 NullPointerException,因此您可能需要防范这种情况。