您的位置:首页 > 其它

暂时处理

2015-10-08 17:17 134 查看
我们当然可以在数据库中用SQL获取,但是那语法我想看过的人都会感觉到头痛.
不过,我们在JDBC中却有个很好的办法.
首先我们看API中对于DataBaseMetaData类的描述,其中有一个方法是这么描述的

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


参数:
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并非只包含一条记录,如果主键是复合主键,则会返回多条记录.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: