找到数据库表单中的主关键字

ZDNet软件频道 时间:2003-12-09 作者:ZDNet China |  我要评论(9)
本文关键词:java 关键字 数据库 JDBC
大多数的数据库有许多的主关键字,但是一个表中不能有两行以上同时有相同的主关键字值。要确定一个数据库表的主关键字,你可以使用Java 数据库连接(JDBC)。
本文译自Builder.com,未经许可请勿转载

大多数的数据库有许多的主关键字,但是一个表中不能有两行以上同时有相同的主关键字值。要确定一个数据库表的主关键字,你可以使用java 数据库连接(JDBC)。

JDBC 包含了强大的元数据处理能力。java.sql.Connection和java.sql.ResultSet类都能够通过调用它们的getMetaData方法进行映射,例如:

// java.sql中的所有类

Connection connection = .....

DatabaseMetaDatadbMeta = connection.getMetaData();

ResultSetrset = .....

ResultSetMetaDatarsMeta = rset.getMetaData();

java.sql.DatabaseMetaData类包含了查找主键的方法。你需要知道表名,目录名(catalog name),模式名(schema name)。如果目录名和模式名未知,你最好不去使用他们,或者使用"null"值。

// 查找Comment 表中的主关键字

// 不存在分类或者方案,所以两者都被置成空。

ResultSetpkRSet = dbMeta.getPrimaryKeys(null, null, "Comment");

while( pkRSet.next() ) {

    System.err.println("****** Comment ******");

    System.err.println("TABLE_CAT  : "+pkRSet.getObject(1));

    System.err.println("TABLE_SCHEM: "+pkRSet.getObject(2));

    System.err.println("TABLE_NAME : "+pkRSet.getObject(3));

    System.err.println("COLUMN_NAME: "+pkRSet.getObject(4));

    System.err.println("KEY_SEQ    : "+pkRSet.getObject(5));

    System.err.println("PK_NAME    : "+pkRSet.getObject(6));

    System.err.println("****** ******* ******");

}

在例子表单“Comment”里有一个叫做“comment_id”的主关键字

下面是在MySQL数据库中上面程序的输出结果:

****** Comment ******

TABLE_CAT  :

TABLE_SCHEM:

TABLE_NAME : Comment

COLUMN_NAME: column_id

KEY_SEQ    : 1

PK_NAME    : column_id

****** ******* ******

之所以存在PK_NAME是因为有时,对于主关键字我们会给它取一个和列名不同的名字,而KEY_SEQ代表了主关键字的顺序号。一些数据库以字母表的顺序保存主关键字并为KEY_SEQ返回0.

当创建原始的数据库过程的时候,查找一个数据表的主关键字是非常重要的。JDBC MetaData类提供了必要的数据库镜象功能使得实现这些数据库过程变得可能。



责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134