【问题标题】:Show column names of multiple-colum index via JDBC通过 JDBC 显示多列索引的列名
【发布时间】:2013-05-03 11:56:11
【问题描述】:

有谁知道如何通过JDBC 获取跨越多列的索引的列名(参见SQL)?我确实知道如何获取所有索引列(请参阅代码),但这样我无法看到哪些列链接到单个索引。

CREATE TABLE IF NOT EXISTS `foo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `test1` int(11) NOT NULL,
  `test2` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `test1` (`test1`,`test2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

DatabaseMetaData md = connection.getMetaData(); // assumed that connection exists
ResultSet rs = md.getIndexInfo(null, dbSchema, "foo", true, false);
while (rs.next()) {
    String columnName = rs.getString("COLUMN_NAME");
}

【问题讨论】:

    标签: java database jdbc


    【解决方案1】:

    对于多列索引,将在 ResultSet 中返回多个条目,其 INDEX_NAME 相同但 COLUMN_NAME 不同

    【讨论】:

    • 啊,是的,这就是我要找的。谢谢!
    【解决方案2】:

    一般建议:如果您想在 Stackoverflow 上提问之前查看是否有可用信息,请查看 Java API javadoc。如果您查看DatabaseMetaData.getIndexInfo() 的Javadoc,您会看到返回的结果集包含的列比COLUMN_NAME 多得多。

    出于您的目的,您还应该查看INDEX_NAMEORDINAL_POSITION(如果您想知道索引中列的顺序)。对于复合索引,ResultSet 包含多于一行(即索引中每列一行)。

    我的回答确实假设您的 JDBC 驱动程序正确实现并返回所有必需的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多