2016-07-27 10 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

2つの使用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(); 
} 
関連する問題