2

i want get foreign key using java DatabaseMetaData and tried.
but i got just foreign key referring pk column and couldn't get referring unique column.
i tried using getCrossReference(), getImportedKeys() pattern and same result.

here is my code and DB is Oracle11g.

    ResultSet rset = databaseMetaData.getImportedKeys(null, dbName, tableName);

    while(rset.next()){
      String column_name = rset.getString("FKCOLUMN_NAME");
      String pk_table = rset.getString("PKTABLE_NAME");
      String pk_column = rset.getString("PKCOLUMN_NAME");
      String constraint_name = rset.getString("FK_NAME");

      System.out.println(column_name + " ==> " + pk_column + "(TBL:" + pk_table + ")(CN:" + constraint_name + ")");
    }
    rset.close();

the table has two foreign keys (one is referring pk column, another is referring unique column) but i got just one log.
is there any mistakes ?
thanks.

user3273956
  • 21
  • 1
  • 4

1 Answers1

0

to get referring unique column you have to use PKCOLUMN_NAME in the getString

 rset.getString("PKCOLUMN_NAME");

here are the complite code :

ResultSet rset = databaseMetaData.getImportedKeys(null, dbName, tableName);

while(rset.next()){
    String column_name = rset.getString("FKCOLUMN_NAME");
    String pk_table = rset.getString("PKTABLE_NAME");
    String pk_column = rset.getString("PKCOLUMN_NAME");
    String constraint_name = rset.getString("PKCOLUMN_NAME");      
    System.out.println("  "+column_name+" reference to "+ pk_table+"("+constraint_name+")");             
}
rset.close();
Amirouche Zeggagh
  • 3,428
  • 1
  • 25
  • 22