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