10

我的代码如下:

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

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

rs 不是 null 而rs.next()总是 return false,有人知道吗?谢谢。

4

1 回答 1

3
  1. 元数据接口实现由驱动程序供应商实现。某些驱动程序和某些数据库可能不支持它。下面是来自 javadoc 的文本:一些 DatabaseMetaData 方法以 ResultSet 对象的形式返回信息列表。常规 ResultSet 方法,例如 getString 和 getInt,可用于从这些 ResultSet 对象中检索数据。如果给定形式的元数据不可用,则将返回一个空的 ResultSet。

  2. oracle中的表名区分大小写

  3. 或尝试以下方法

    数据库元数据 dm = conn.getMetaData( );
    结果集 rs = dm.getExportedKeys( "" , "" , "table1" );
    同时(rs.next())
    {    
      字符串 pkey = rs.getString("PKCOLUMN_NAME");
      System.out.println("主键 = " + pkey);
    }
    

    您还可以使用 getCrossReference 或 getImportedKeys 来检索主键

于 2012-07-16T20:19:06.373 回答