2016-07-27 144 views
0

我需要能够根据元数据中列的名称获取列的索引。目前,我有以下的...这是JavaFX和JDBC代码的组合(见我的代码注释的正是我试图做)根据列名获取SQL列索引

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)一样使用,但我并不完全理解如何使用它来实现我想要的功能。谢谢!

+0

布伦丹,你想提取已在使用getIndexInfo()API表创建的索引? ,PK指数是什么意思?在表上创建唯一索引? –

+0

我想获得表的主键的索引。我的数据库中有很多表格,我不确定如何使用getIndexInfo API,但我找不到任何信息。我认为这是我需要使用的,并且在这里发布,希望有人能帮助我。我真正需要做的就是获取特定表的主键的索引。 –

回答

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(); 
}