Java 结果集元数据为数字和数字(精度、比例)提供了相同的列类型

Java 结果集元数据为数字和数字(精度、比例)提供了相同的列类型,java,sql,oracle,metadata,Java,Sql,Oracle,Metadata,我尝试使用元数据获取列类型。 我有VARCHAR2、NUMBER和NUMBER(精度、刻度)类型的列,分别存储文本、整数和浮点值。 当我使用下面的代码时,我得到的列类型是NUMBER和NUMBER(精度、比例)的NUMBER 语句stmt=dbCon.createStatement(); ResultSet ResultSet=stmt.executeQuery(“从TBL_数据_信息中选择*,其中1=2”); ResultSetMetaData rsmd=resultSet.getMetaDa

我尝试使用元数据获取列类型。 我有VARCHAR2、NUMBER和NUMBER(精度、刻度)类型的列,分别存储文本、整数和浮点值。 当我使用下面的代码时,我得到的列类型是NUMBER和NUMBER(精度、比例)的NUMBER

语句stmt=dbCon.createStatement(); ResultSet ResultSet=stmt.executeQuery(“从TBL_数据_信息中选择*,其中1=2”); ResultSetMetaData rsmd=resultSet.getMetaData(); int noOfcols=rsmd.getColumnCount(); 对于(int i=1;i 我有VARCHAR2、NUMBER和NUMBER(精度、刻度)类型的列,分别存储文本、整数和浮点值。我得到的列类型是NUMBER和NUMBER(精度、刻度)的NUMBER

不管怎么说,Oracle数字不是浮点数:它是固定的。Oracle确实提供二进制浮点数和二进制双精度,用于存储大于数字支持的值


数字和数字(精度、刻度)之间的区别在于前者允许任何适合数据类型的数值,但后者强制执行特定的格式。实际上,要强制执行一个值必须是整数的规则,我们需要定义一个刻度,即任何长度或数字(4,0)的整数的数字(*,0)四位整数。

getColumnDisplaySize()
顾名思义就是:它返回该列的显示大小。它既不是精度也不是刻度。如果需要,请使用
getScale()
getPrecision()
@一匹没有名字的马我敢打赌,这个问题的大多数读者都不知道这一点。你要么回答,要么标记重复(假设你能找到一匹合适的马)。
Statement stmt = dbCon.createStatement();
ResultSet resultSet = stmt.executeQuery("select * from TBL_DATA_INFO where 1 = 2");
        ResultSetMetaData rsmd = resultSet.getMetaData();
        int noOfcols = rsmd.getColumnCount();
        for(int i=1;i<=noOfcols;i++) {              
            String colName = rsmd.getColumnName(i); 
            String colType = rsmd.getColumnTypeName(i);
            int size = rsmd.getColumnDisplaySize(i);
            System.out.println("##Column name: [" + name + "]; type: [" + type + "]; size: [" + size + "]");
        }