JDBC元数据获取十进制精度

时间:2016-12-12 07:55:32

标签: java jdbc spring-boot

我正在使用jdbc从teradata进行元数据提取,我想获得所有数据类型。但是对于包含DECIMAL(10,4)的DB字段,我无法获得精度。我附上了我的代码段。欢迎提出建议!

 DatabaseMetaData md = con.getMetaData();

    ResultSet tbls = md.getTables(null, schema, name, null);
            if(false == tbls.next()){
                nonExistingRdbmsTables.add(name);
                LOGGER.error("Table with name {} in schema {} does not exists in source database", name, schema);
                continue;
            }

            RdbmsTableMetadata tableMD = new RdbmsTableMetadata();
            List<String> pkList = new ArrayList();
            ResultSet primaryKeys = md.getPrimaryKeys(null, schema, name);
            while(primaryKeys.next()){
                String pk = primaryKeys.getString("COLUMN_NAME");
                pkList.add(pk);
            }
            tableMD.setPkList(pkList);
            LOGGER.info("*****Primary key list for table {} is {}", name, pkList);

            tableMD.setSchema(schema);
            tableMD.setName(name);
            tableMD.setTargetName(targetName);
            tableMD.setTargetSchema(targetSchema);
            List<Column> colList = new ArrayList<>();

            ResultSet cols = md.getColumns(null, schema, name, null);
            while (cols.next()) {
                String columnName = cols.getString("COLUMN_NAME");
                String columnType = cols.getString("TYPE_NAME");
                String columnLength = cols.getString("COLUMN_SIZE");
}

有什么办法可以从jdbc元数据中查询精度细节吗?

2 个答案:

答案 0 :(得分:2)

对于未来的参考者: -

int precision = cols.getInt("DECIMAL_DIGITS");

这很好用!感谢alex和Mark。

答案 1 :(得分:0)

<img src="{{ action('MediaController@imageShow', ['folder' => 'countries', 'image' => $country->code.'.png']) }}" /> 提供ResultSetMetaDatagetScale(int col)方法。如果那些人没有给你你想要的东西,你可能会运气不好。