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

时间:2012-07-16 14:53:50

标签: java 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 个答案:

答案 0 :(得分:3)

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

  2. 表名在oracle

  3. 中区分大小写
  4. 或尝试以下方法

    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来检索主键