根据列名获取SQL列索引

时间:2016-07-27 03:48:08

标签: java sql database jdbc

我需要能够根据元数据中列的名称获取列的索引。目前我有以下内容......它是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),但我并不完全理解如何使用它来实现我想要的。谢谢!

1 个答案:

答案 0 :(得分:0)

使用两个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();
}