查找数据表的主键

原创 2004年08月19日 22:21:00
大多数数据库有许多主键,但是在一个表中不允许两条记录的同一个主键具有相同的值。可以使用Java Database Connectivity(JDBC)来判断一个数据表的主键。
  JDBC具有强大的元数据处理能力。java.sql.Connection类和java.sql.ResultSet类可以通过调用其getMetaData方法进行反射,例如:
// 对java.sql中所有的类

Connection connection = .....
DatabaseMetaData dbMeta = connection.getMetaData();

ResultSet rset = .....
ResultSetMetaData rsMeta = rset.getMetaData(); 
java.sql.DatabaseMetaData类包含一个查找数据表主键的方法。你需要知道表的名字,catalog名和schema名。如果不知道catalog和schema,那么你可以不使用它们而输入“null”。例如:
// 查找一个名字为“Comment”的表的主键

// 没有catalog或schema,都设置为null
ResultSet pkRSet = 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类提供了所需的数据库反射机制,从而使得这些应用的实现成为可能。

数据库学习--基于postgreSQL的数据库设计与主键 外键

前言学习数据库设计已经有多个星期了,现在有时间整理一下,又整合了一些其他的数据库的基本知识,显得稍乱。postgreSQL数据库本博文以postgreSQL数据库为操作基础。常用命令复习一下常用的po...
  • qq_33429968
  • qq_33429968
  • 2016年12月10日 14:24
  • 1473

没有主键的表如何查询表内数据重复条数?

查询表内数据重复条数(有些历史库表没有主键)   1、先来看一张表TMP的数据(无主键) 查询重复记录数 语句: SELECT Station,City,Temperature,COUNT(*) 重...
  • cjp20160817
  • cjp20160817
  • 2016年08月17日 16:09
  • 532

数据库 主键与索引键的区别

关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空...
  • VMA_LMA
  • VMA_LMA
  • 2013年05月29日 14:03
  • 2030

数据库中主键与索引的区别

区别: 1:主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引. 2:数据表中只允许有一个主键,但是可以有多个索引. 3.使用主键会数据库会自动创建主索引,也可以在非...
  • a1037488611
  • a1037488611
  • 2015年03月14日 22:06
  • 7181

MySQL 5.7主键查找结果—真的很快嘛?

这篇博客测试MySQL5.7的主键查询结果并确定MySQL5.7是不是真的比之前的版本查询的更快。   前段时间MySQL5.7刚刚发布,现在尘埃落定,是时候来测试一下它在性能上面的提升了。 ...
  • u010725670
  • u010725670
  • 2016年04月15日 10:17
  • 1089

mysql中,索引,主键,唯一索引,联合索引的区别

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。...
  • u011341352
  • u011341352
  • 2015年08月17日 20:15
  • 10867

[MySQL]数据库主键设计之思考

数据库主键设计之思考一 1.是否要采用GUID作为主键 用GUID作主键有它的优势与不足.优势是GUID具有唯一性,在任何情况下,可以产生全球唯一的值.这是GUID 最大的优势,也方便数据...
  • linzhiqiang0316
  • linzhiqiang0316
  • 2016年10月21日 11:02
  • 1215

主键设计用什么字段类型比较好?

主键的必要性:  有些朋友可能不提倡数据库表必须要主键,但在我的思考中,觉得每个表都应该具有主键,不管是单主键还是双主键,主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要...
  • u013715683
  • u013715683
  • 2014年02月20日 14:52
  • 2200

数据库中使用自增量字段与Guid字段主键对比

1.概述     在我们设计数据库时,数据库的表主键是必不可少的,主键的设计对整个数据库的设计影响很大。主键的设计主要有使用自动增长字段和使用Guid字段两种,上网搜了一些内容就对自动增量字...
  • ydm19891101
  • ydm19891101
  • 2015年01月30日 15:37
  • 751

数据库主键的设计和思考

1、 何谓数据库主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约...
  • likika2012
  • likika2012
  • 2013年08月13日 16:08
  • 10002
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:查找数据表的主键
举报原因:
原因补充:

(最多只允许输入30个字)