2012-07-16 90 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