繁体   English   中英

Java ResultSetMetaData返回不正确的列类型

[英]Java ResultSetMetaData returning an incorrect column type

因此,我一直在使用带有oracle数据库的ResultSetMetaData。

我遇到了我无法解释的奇怪事情。 我有一个FLOAT栏-定义为FLOAT(63)。 当我使用SQLPLUS时,它确认这是FLOAT(63)(TOAD和我在Perl中编写的另一个脚本一样)-但是,当我使用下面的代码在Java中查询此列时,它返回为NUMBER(63) -这是ResultSet的怪癖还是我没有做过的配置?

顺便说一句,在我使用过的所有其他数据类型上,它都能正常工作-只是这个很奇怪。

ResultSet rs=stmt.executeQuery("SELECT " + column + " FROM " + schemaTable + " WHERE ROWNUM = 1");
ResultSetMetaData rsmd = rs.getMetaData();

while(rs.next()) {   
            actualType      = rsmd.getColumnTypeName(1);
            actualPrecision = rsmd.getPrecision(1);

您不能在Oracle中定义float数据类型。 您定义一个真实的数据类型,并将其转换为Java中的float

对于REAL类型,建议的Java映射是Java浮点型。

查看更多

根据Oracle的文档

FLOAT值在内部以NUMBER表示。

可能这就是getMetaData()返回Number而不是Float

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM