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

Java 如何通过jdbc获取主键的列名,java,jdbc,Java,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,有人知道吗?谢谢 元数据接口实现由驱动程序供应商实现。某些驱动程序和某些数据

我的代码如下:

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

while(rs.next()){
    primaryKey = rs.getString("COLUMN_NAME");
}
rs不为null,而
rs.next()
始终返回
false
,有人知道吗?谢谢

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

  • 表名在oracle中区分大小写

  • 或者尝试下面的方法

    DatabaseMetaData dm = conn.getMetaData( ); ResultSet rs = dm.getExportedKeys( "" , "" , "table1" ); while( rs.next( ) ) { String pkey = rs.getString("PKCOLUMN_NAME"); System.out.println("primary key = " + pkey); } DatabaseMetaData dm=conn.getMetaData(); 结果集rs=dm.getExportedKeys(“,”,“表1”); while(rs.next()) { 字符串pkey=rs.getString(“PKCOLUMN_NAME”); System.out.println(“主键=“+pkey”); } 还可以使用getCrossReference或getImportedKeys检索主键


  • 您正在使用哪个数据库引擎?因为并非所有驱动程序/DB引擎都支持从jdbc读取MEDATA。通常我们使用**ResultSetMetaData**()来实现这一点。但是,我找不到适合您要求的任何方法。@ManuPK在本例中是正确的类
    DatabaseMetaData
    。您确定表名拼写正确(大写与小写?),并且表实际上有主键(不仅仅是唯一键?)还有什么方法可以获得主键的类型吗?@Zaheer你有没有设法弄明白如何获得主键的
    类型
    。@Zaheer,我相信可以,但一定有更简单的方法