主键

如何获取一个表中的主键是什么

 (2007-07-20 20:16:00)
  分类: On My Way
 我们当然可以在数据库中用SQL获取,但是那语法我想看过的人都会感觉到头痛.
不过,我们在JDBC中却有个很好的办法.
 首先我们看API中对于DataBaseMetaData类的描述,其中有一个方法是这么描述的

getPrimaryKeys

ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException
检索对给定表的主键列的描述。它们根据 COLUMN_NAME 进行排序。

每个主键列描述都有以下列:

  1. TABLE_CAT String => 表类别(可为 null
  2. TABLE_SCHEM String => 表模式(可为 null
  3. TABLE_NAME String => 表名称
  4. COLUMN_NAME String => 列名称
  5. KEY_SEQ short => 主键中的序列号
  6. PK_NAME String => 主键的名称(可为 null
参数:
  1. catalog - 类别名称,因为存储在数据库中,所以它必须匹配类别名称。该参数为 "" 则检索没有类别的描述,为 null 则表示该类别名称不应用于缩小搜索范围
    schema - 模式名称,因为存储在数据库中,所以它必须匹配模式名称。该参数为 "" 则检索那些没有模式的描述,为 null 则表示该模式名称不应用于缩小搜索范围
    table - 表名称,因为存储在数据库中,所以它必须匹配表名称

这不是正是我们需要的primarykey嘛~哈哈,于是,我们先获取一个DataBaseMetaData对象,如何得到呢? connection = DriverManager.getConnection();

  DataBaseMetaData dbmd = connection.getMetaData()就可以获取了.

通过这个对象    ResultSet rs = dbmd.getPrimaryKey("","",tableName);

        String pk = rs.getString(4)即可得到你的tableName表中的主键是什么了.这里的参数4代表了COLUMN_NAME,注意,我们并没有使用6代表的PK_NAME来作为参数,因为6返回的将是你的主键的描述名.

    需要注意的是,这个ResultSet对象rs并非只包含一条记录,如果主键是复合主键,则会返回多条记录.

posted @ 2015-08-28 16:06  yu0312chao  阅读(143)  评论(0编辑  收藏  举报