Java 结果集元数据为数字和数字(精度、比例)提供了相同的列类型
我尝试使用元数据获取列类型。 我有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确实提供二进制浮点数和二进制双精度,用于存储大于数字支持的值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
数字和数字(精度、刻度)之间的区别在于前者允许任何适合数据类型的数值,但后者强制执行特定的格式。实际上,要强制执行一个值必须是整数的规则,我们需要定义一个刻度,即任何长度或数字(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 + "]");
}