gpt4 book ai didi

java - 使用 JDBC 检索给定表的所有索引

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:43 26 4
gpt4 key购买 nike

我想编写一个 SpringBatch Tasklet,它可以自动激活或停用给定数据库表的所有索引。代码需要独立于 DBMS 工作(需要 SQL Server、Oracle 和 HSQLDB)。

这是我目前尝试过的:

DatabaseMetaData dbMetaData = connection.getMetaData();
ResultSet rs = dbMetaData.getIndexInfo(null, null, tableName, true, false);
while (rs.next()) {
// work with ResultSet
}

但是,我没有得到索引的名称或任何有用的信息。

那么谁能给出一些关于如何仅使用 JDBC 连接对象将表的所有索引设置为 Activity 或非 Activity 的提示?

最佳答案

您必须区分主键(使用 DatabaseMetaData.getPrimaryKeys() 检索)和其他索引(通过 dbMetaData.getIndexInfo(null, null, tableName, true, false )).
在你的循环中使用:

  • rs.getString("INDEX_NAME") 提取索引名称
  • rs.getBoolean("NON_UNIQUE") 提取唯一信息
  • rs.getShort("TYPE") 提取索引类型
  • rs.getInt("ORDINAL_POSITION") 提取序数位置

使用 ORDINAL_POSITION 作为键中断(当当前值 <= 前一个值时)来检测索引变化。
阅读official DatabaseMetaData.getIndexInfo() doc

关于java - 使用 JDBC 检索给定表的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21001561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com