Как получить имя столбца первичного ключа через jdbc

У меня есть код следующим образом:

DatabaseMetaData dmd = connection.getMetaData();
ResultSet rs = dmd.getPrimaryKeys(null, null, tableName);

while(rs.next()){
    primaryKey = rs.getString("COLUMN_NAME");
}

rs не является нулевым, а rs.next() всегда возвращает false, у кого есть идея об этом? Спасибо.

Ответ 1

  • реализация интерфейса метаданных была реализована поставщиками драйверов. Он может не поддерживаться некоторыми драйверами и некоторыми db. Вот текст из javadoc: Некоторые методы DatabaseMetaData возвращают списки информации в виде объектов ResultSet. Регулярные методы ResultSet, такие как getString и getInt, могут использоваться для извлечения данных из этих объектов ResultSet. Если данная форма метаданных недоступна, возвращается пустой ResultSet.

  • Имя таблицы чувствительно к регистру в оракуле

  • или попробуйте подход ниже.

    DatabaseMetaData dm = conn.getMetaData( );
    ResultSet rs = dm.getExportedKeys( "" , "" , "table1" );
    while( rs.next( ) ) 
    {    
      String pkey = rs.getString("PKCOLUMN_NAME");
      System.out.println("primary key = " + pkey);
    }
    

    вы также можете использовать getCrossReference или getImportedKeys для извлечения первичного ключа