根据列名获取SQL列索引
问题描述:
我需要能够根据元数据中列的名称获取列的索引。目前,我有以下的...这是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)一样使用,但我并不完全理解如何使用它来实现我想要的功能。谢谢!
答
使用两个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();
}
布伦丹,你想提取已在使用getIndexInfo()API表创建的索引? ,PK指数是什么意思?在表上创建唯一索引? –
我想获得表的主键的索引。我的数据库中有很多表格,我不确定如何使用getIndexInfo API,但我找不到任何信息。我认为这是我需要使用的,并且在这里发布,希望有人能帮助我。我真正需要做的就是获取特定表的主键的索引。 –