ResultSetMetaData返回BigDecimal而不是int

时间:2009-09-13 23:17:37

标签: java jdbc

需要一些关于jdbc元数据的帮助。 我正在使用ResultsetMetaData来获取 Oracle10g 上表的列的元数据。我正在使用ojdbc14.jar。表ID中的字段声明为Number。在运行时使用jdbc读取此字段以获取其元数据属性。 ResultSetMetaData.getColumnClassName()返回 java.math.BigDecimal ,而我期望它是Integer或int或long或Long类型。 我甚至尝试使用语句创建表,并将ID列的 int 类型明确定义为

CREATE TABLE COST_DETAILS ( ID **INT** Primary Key...

但仍然ResultSetMetaData返回ID列的BigDecimal。

有没有办法创建具有任何特定列类型的表,以便它将返回int / long类型?

或者是ResultsetMetaData总是为Oracle返回BigDecimal。

2 个答案:

答案 0 :(得分:6)

我认为Oracle数字将始终映射到BigDecimal,因为Oracle不会将它们存储为二进制int,因此这是一个精确的映射。 Oracle datatypesOracle JDBC您可以将浮点数作为二进制数

答案 1 :(得分:0)

没有。这取决于司机。

您可以拥有以下内容:

if( class == "BigDecimal" ) {
    return "Integer" 
} else if ( .... 

返回整数而不是bigdecimal。这就是大多数人所做的。