2012-07-16 13 views
10

Ho il codice come segue:Come ottenere il nome della colonna della chiave primaria tramite JDBC

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

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

rs non è nullo, mentre rs.next() ritornano sempre false, qualcuno ha idea in proposito? Grazie.

+2

Quale motore DB sono stai usando? Poiché non tutti i driver/motori DB potrebbero supportare la lettura della medatada da jdbc. – Augusto

+0

Normalmente usiamo ** ResultSetMetaData ** (http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSetMetaData.html) per questo. Non sono riuscito a trovare alcun metodo adatto per il tuo requisito. – ManuPK

+1

@ManuPK In questo caso 'DatabaseMetaData' è la classe giusta. –

risposta

3
  1. l'implementazione dell'interfaccia di metadati è stata implementata dai fornitori di driver. Potrebbe non essere supportato da alcuni driver e alcuni db. Ecco il testo di javadoc: Alcuni metodi DatabaseMetaData restituiscono elenchi di informazioni sotto forma di oggetti ResultSet. I metodi ResultSet regolari, come getString e getInt, possono essere utilizzati per recuperare i dati da questi oggetti ResultSet. Se una data forma di metadata non è disponibile, verrà restituito un ResultSet vuoto.

  2. nome della tabella è maiuscole e minuscole in Oracle

  3. o provare l'avvicinamento al di sotto

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

    è anche possibile utilizzare getCrossReference o getImportedKeys per recuperare chiave primaria

+0

C'è un modo per ottenere il tipo di primaria anche le chiavi? – Zaheer

Problemi correlati