【发布时间】:2020-03-29 02:41:57
【问题描述】:
我尝试使用元数据获取列类型。 我有 VARCHAR2、NUMBER 和 NUMBER(Precision,Scale) 类型的列,它们分别存储文本、整数和浮点值。 当我使用下面的代码时,我将列类型作为 NUMBER 用于 NUMBER 和 NUMBER(Precision,Scale)。
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 + "]");
}
如何判断列是 NUMBER 还是 NUMBER(Precision,Scale) 类型。
【问题讨论】:
-
getColumnDisplaySize()顾名思义:它返回该列的 display 大小。它既不是精度也不是规模。如果你想要这些,请使用getScale()和getPrecision() -
@a_horse_with_no_name 我敢打赌这个问题的大多数读者不会知道这一点。您应该回答或标记重复(假设您可以找到合适的)。