10

私は次のようなコードを持っています:

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

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

rs は null ではありませんが、rs.next()常に returnfalseですが、誰かがそれについて考えていますか? ありがとう。

4

1 に答える 1

3
  1. メタデータ インターフェイスの実装は、ドライバー ベンダーによって実装されました。一部のドライバーや一部のデータベースではサポートされていない場合があります。以下は javadoc のテキストです。 一部の DatabaseMetaData メソッドは、情報のリストを ResultSet オブジェクトの形式で返します。getString や getInt などの通常の ResultSet メソッドを使用して、これらの ResultSet オブジェクトからデータを取得できます。特定の形式のメタデータが利用できない場合、空の ResultSet が返されます。

  2. テーブル名はオラクルでは大文字と小文字が区別されます

  3. または以下のアプローチを試してください

    データベースメタデータ dm = conn.getMetaData( );
    ResultSet rs = dm.getExportedKeys( "" , "" , "table1" );
    while( rs.next( ) )
    {    
      文字列 pkey = rs.getString("PKCOLUMN_NAME");
      System.out.println("主キー = " + pkey);
    }
    

    getCrossReference または getImportedKeys を使用して主キーを取得することもできます

于 2012-07-16T20:19:06.373 に答える