注册

【jdbc读取元数据】无法读取索引是否是主键索引

星星喵了个咪 2024/07/08 346 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8_20230808_rev197096_x86_rh6_64
【问题描述】*:通过JDBC读取表的索引信息,
maven版本如下:

<dependency> <groupId>com.dameng</groupId> <artifactId>dm-jdbc</artifactId> <version>1.8</version> </dependency>

代码如下:

DatabaseMetaData dbMetaData = connection.getMetaData(); resultSet = dbMetaData.getIndexInfo(catalog, schema, tableName, false, false); Set<String> keys = getColumnNames(resultSet); while (resultSet.next()) { IndexInfo indexInfo = new IndexInfo(); String type = resultSet.getString("TYPE"); if (keys.contains("TABLE_CAT")) { indexInfo.setTableCat(resultSet.getString("TABLE_CAT")); } if (keys.contains("TABLE_SCHEM")) { indexInfo.setTableSchema(resultSet.getString("TABLE_SCHEM")); } if (keys.contains("TABLE_NAME")) { indexInfo.setTableName(resultSet.getString("TABLE_NAME")); } if (keys.contains("NON_UNIQUE")) { indexInfo.setNonUnique(resultSet.getBoolean("NON_UNIQUE")); } if (keys.contains("INDEX_QUALIFIER")) { indexInfo.setIndexQualifier(resultSet.getString("INDEX_QUALIFIER")); } if (keys.contains("INDEX_NAME")) { indexInfo.setIndexName(resultSet.getString("INDEX_NAME")); } if (keys.contains("TYPE")) { indexInfo.setType(resultSet.getShort("TYPE")); } if (keys.contains("ORDINAL_POSITION")) { indexInfo.setOrdinalPosition(resultSet.getShort("ORDINAL_POSITION")); } if (keys.contains("COLUMN_NAME")) { indexInfo.setColumnName(resultSet.getString("COLUMN_NAME")); } if (keys.contains("ASC_OR_DESC")) { indexInfo.setAscOrDesc(resultSet.getString("ASC_OR_DESC")); } if (keys.contains("CARDINALITY")) { indexInfo.setCardinality(resultSet.getInt("CARDINALITY")); } if (keys.contains("PAGES")) { indexInfo.setPages(resultSet.getLong("PAGES")); } if (keys.contains("FILTER_CONDITION")) { indexInfo.setFilterCondition(resultSet.getString("FILTER_CONDITION")); } indexInfos.add(indexInfo);

读取结果没有可以区分主键索引和普通索引的属性,请问是否有办法解决?
image.png

回答 0
暂无回答
扫一扫
联系客服