【问题标题】:Getting an SQL column index based on the column name根据列名获取 SQL 列索引
【发布时间】:2016-07-27 03:48:07
【问题描述】:

我需要能够根据元数据中列的名称获取列的索引。目前我有以下... 它是 JavaFX 和 JDBC 代码的混合体(请参阅我在代码中的评论以了解我正在尝试做的事情)

String selectedTable = tablegroup.getSelectedToggle().getUserData().toString();
String primaryKey;
try{
    ResultSet primaryKeyRS = meta.getPrimaryKeys(null, null, selectedTable.toUpperCase());
    while (primaryKeyRS.next()){
    primaryKey = primaryKeyRS.getString("COLUMN_NAME");
    /*
    I want to do something like this:
    Int pkIndex = meta.getIndex(primaryKey);
    */
}
}catch (Exception e){
    e.printStackTrace();
}

有人知道我可以实现这一目标的方法吗?我知道有一个我可以使用的函数,比如 meta.getIndexInfo(args) 但我并不完全理解如何使用它来实现我想要的。谢谢!

【问题讨论】:

  • Brendan,您是否尝试使用 getIndexInfo() API 提取已在表上创建的索引? ,PK指数是什么意思?在表上创建的唯一索引?
  • 我正在尝试获取表的主键的索引。我的数据库中有很多表,我不确定如何使用 getIndexInfo API,我能找到的信息很少。我认为这是我需要使用的,并在此处发布,希望有人可以帮助我。我真正需要做的就是获取特定表的主键索引。

标签: java sql database jdbc


【解决方案1】:

使用两个 JdbcRowSet 对象并在它们之间连接:

String selectedTable = tablegroup.getSelectedToggle().getUserData().toString();
String primaryKey;
try{
    ResultSet primaryKeyRS = meta.getPrimaryKeys(null, null, selectedTable.toUpperCase());
    ResultSet indexInfoRS = meta.getIndexInfo(null, null, selectedTable.toUpperCase());

    JdbcRowSet pkRowSet = new JdbcRowSetImpl(primaryKeyRS);
    JdbcRowSet idxRowSet = new JdbcRowSetImpl(indexInfoRS);
    JoinRowSet joinRowSet = new JoinRowSetImpl();

    joinRowSet.setJoinType(JoinRowSet.INNER_JOIN);

    joinRowSet.addRowSet(pkRowSet, "COLUMN_NAME");
    joinRowSet.addRowSet(idxRowSet, "COLUMN_NAME");

    while(joinRowSet.next()) {
       System.out.println(joinRowSet.getString("INDEX_NAME"));
    }
}
}catch (Exception e){
    e.printStackTrace();
}

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 2013-02-06
    • 2015-10-02
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多