2016-07-27 23 views
0

Ich muss den Index einer Spalte basierend auf dem Namen der Spalte in den Metadaten abrufen können. Zur Zeit habe ich folgendes ... Es ist eine Mischung aus JavaFX und JDBC-Code (mein Kommentar in Code sehen Sie genau das, was ich versuche zu tun)Abrufen eines SQL-Spaltenindex basierend auf dem Spaltennamen

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

Weiß jemand, der eine Art und Weise, die ich erreichen kann, Dies? Ich weiß, dass es eine Funktion gibt, die ich wie meta.getIndexInfo (args) benutzen könnte, aber ich verstehe nicht ganz, wie ich es benutzen kann, um das zu erreichen, was ich will. Vielen Dank!

+0

Brendan, versuchen Sie die Indizes zu extrahieren, die für die Tabelle erstellt wurden, um das GetIndexInfo() API verwenden? Was ist mit PK Index gemeint? Einzigartige Indizes in der Tabelle erstellt? –

+0

Ich versuche, den Index des Primärschlüssels der Tabelle zu erhalten. Es gibt viele Tabellen in meiner Datenbank und ich bin mir nicht sicher, wie ich die getIndexInfo-API verwenden soll. Es gibt sehr wenige Informationen, die ich finden kann. Ich dachte mir, dass ich das hier verwenden muss und postete hier, in der Hoffnung, dass mir jemand helfen könnte. Alles, was ich wirklich tun muss, ist den Index des Primärschlüssels einer bestimmten Tabelle zu bekommen. –

Antwort

0

Verwenden Sie zwei JdbcRowSet Objekte und kommt zwischen ihnen:

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