当用
select 列名... from table 查询后,
怎么判定这个查询出的结果列中,那些列是主键??????

解决方案 »

  1.   

    大哥,
    现在在java程序中一次性要查出所以的表,
    然后在程序中递归所有的表,判别哪些表的哪些字段是主键???
      

  2.   

    try{
       String url = "";
       String driver = "oracle.jdbc.driver.OracleDriver";
       String user ="";
       String password ="";
       Class.forName(driver);
       Connection con = DriverManager.getConnection(url, user, password);
       ResultSet rs = con.getMetaData().getPrimaryKeys(null, null, "DFND_LOGIN_MSG");
       
       if(rs.next()){
       System.out.println(rs.getString(4));
       }
       if(con!=null)
       con.close();
    }catch(Exception e ){
       e.printStackTrace();
    }
    测试代码,具体参见jdk api
    以下为节选
    getPrimaryKeys
    ResultSet getPrimaryKeys(String catalog,
                             String schema,
                             String table)
                             throws SQLException检索对给定表的主键列的描述。它们根据 COLUMN_NAME 进行排序。 
    每个主键列描述都有以下列: TABLE_CAT String => 表类别(可为 null) 
    TABLE_SCHEM String => 表模式(可为 null) 
    TABLE_NAME String => 表名称 
    COLUMN_NAME String => 列名称 
    KEY_SEQ short => 主键中的序列号 
    PK_NAME String => 主键的名称(可为 null) 
      

  3.   

    try{
                   String url = "";
                   String driver = "oracle.jdbc.driver.OracleDriver";
                   String user ="";
                   String password ="";
                   Class.forName(driver);
                   Connection con = DriverManager.getConnection(url, user, password);
                   ResultSet rs = con.getMetaData().getPrimaryKeys(null, null, "DFND_LOGIN_MSG");
                   
                   if(rs.next()){
                       System.out.println(rs.getString(4));
                   }
                   if(con!=null)
                   con.close();
                }catch(Exception e ){
                       e.printStackTrace();
                }