2

我在 oracle 中创建下表:

CREATE TABLE TEST
(
 DKEY INTEGER NOT NULL PRIMARY KEY,
 NOM VARCHAR2(255) NOT NULL
)

当我尝试使用此 java 代码获取 DKEY 字段的类型时,我得到以下结果:

DatabaseMetaData md = cnx.getMetaData();
ResultSet rsmd = md.getColumns(null, strSchema, strTableName, "%");
while (rsmd != null && rsmd.next()) {
    String strTmp = rsmd.getString("SQL_DATA_TYPE");  // this return 0 for field DKEY
    int intDType = rsmd.getInt("DATA_TYPE");          // this return 3 for field DKEY
    String strFType = rsmd.getString("TYPE_NAME")     // this return NUMBER for field DKEY
}

为什么我得到 NUMBER 而不是 INTEGER?

4

2 回答 2

5

尽管您可以INTEGER在 SQL 语句中指定数据类型,但 Oracle 将NUMBER(38)在其实现中使用。

请参阅此处的Oracle 数据类型和本文

于 2013-05-30T14:49:59.110 回答
0

我认为表列 DKEY 属性类型是 NUMBER

但是试试

while (rsmd != null && rsmd.next()) {
    String strTmp = rsmd.getString("SQL_DATA_TYPE");  // this return 0 for field DKEY
    int intDType = Integer.parseInt(rsmd.getLong("DATA_TYPE"));          // this return 3 for field DKEY
    String strFType = rsmd.getString("TYPE_NAME")     // this return NUMBER for field DKEY
}
于 2013-05-30T14:53:45.610 回答