2012-07-16 97 views
10

主键的列名我的代码如下:如何获得通过JDBC

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

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

RS不为空,而rs.next()总是返回false,任何人有关于它的主意?谢谢。

+2

哪个数据库引擎是区分大小写你在用吗?由于并非所有的驱动程序/数据库引擎都可能支持从jdbc中读取medatada。 – Augusto 2012-07-16 15:06:53

+0

通常我们使用** ResultSetMetaData **(http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSetMetaData.html)。尽管如此,我找不到适合您需求的方法。 – ManuPK 2012-07-16 15:11:36

+1

@ManuPK在这种情况下'DatabaseMetaData'是正确的类。 – 2012-07-16 17:43:14

回答

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

  2. 表名是Oracle

  3. 或尝试下面的方法

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

+0

有没有一种方法可以获取主键的类型钥匙以及? – Zaheer 2017-09-15 05:54:46