2012-07-16 10 views
10

tengo el código de la siguiente manera:¿Cómo obtener el nombre de la columna de la clave primaria a través de JDBC

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

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

rs no es nula, mientras que rs.next() siempre vuelven false, alguien tiene idea al respecto? Gracias.

+2

¿Qué motor de base de datos son estás usando? Como no todos los controladores/motores de DB pueden ser compatibles para leer la medatada de jdbc. – Augusto

+0

Normalmente usamos ** ResultSetMetaData ** (http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSetMetaData.html) para esto. Sin embargo, no pude encontrar ningún método adecuado para su requerimiento. – ManuPK

+1

@ManuPK En este caso 'DatabaseMetaData' es la clase correcta. –

Respuesta

3
  1. implementación de la interfaz de metadatos fue implementada por los proveedores de controladores. Es posible que no sea compatible con algunos controladores y algunos db. Aquí hay texto de javadoc: Algunos métodos DatabaseMetaData devuelven listas de información en forma de objetos ResultSet. Los métodos regulares ResultSet, como getString y getInt, se pueden usar para recuperar los datos de estos objetos ResultSet. Si una forma determinada de metadatos no está disponible, se devolverá un ResultSet vacío.

  2. nombre de la tabla de mayúsculas y minúsculas en el oráculo

  3. o tratar la aproximación por debajo de

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

    también se puede utilizar getCrossReference o getImportedKeys para recuperar la clave primaria

+0

¿Hay alguna manera de obtener el tipo de letra principal? llaves también? – Zaheer

Cuestiones relacionadas