Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ResultSetMetaData返回的是BigDecimal而不是int_Java_Jdbc - Fatal编程技术网

Java ResultSetMetaData返回的是BigDecimal而不是int

Java ResultSetMetaData返回的是BigDecimal而不是int,java,jdbc,Java,Jdbc,需要一些关于jdbc元数据的帮助。 我正在使用ResultsetMetaData获取Oracle10g上表列的元数据。我正在使用ojdbc14.jar。表ID中有一个字段声明为数字。jdbc在运行时读取此字段以获取其元数据属性ResultSetMetaData.getColumnClassName()正在返回java.math.BigDecimal,而我希望它是整型、整型、长型或长型。 我甚至尝试用显式定义ID列为的int类型的语句创建表 CREATE TABLE COST_DETAILS (

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

CREATE TABLE COST_DETAILS ( ID **INT** Primary Key...
但ResultSetMetaData仍返回ID列的BigDecimal

有没有办法创建具有任何特定列类型的表,以便重新运行int/long类型


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

否。这取决于驱动程序

您可以选择以下内容:

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

并返回整数而不是bigdecimal。大多数人都是这样做的

我认为Oracle数字总是映射到BigDecimal,因为Oracle不将它们存储为二进制int,所以这是一个精确的映射。您可以在一个辅助方法中使浮点数成为二进制

,该辅助方法用于确定哪个java类型属于哪个sql类型apache utils库中实际上有一个类可以执行类似的操作,但我找不到它。类似这样的内容:getJavaType(rsmd.getType(column));//或者类似的