如何通过jdbc获取主键的列名

我的代码如下:

DatabaseMetaData dmd = connection.getMetaData(); ResultSet rs = dmd.getPrimaryKeys(null, null, tableName); while(rs.next()){ primaryKey = rs.getString("COLUMN_NAME"); } 

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

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

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

  3. 或尝试以下方法

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

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