查找数据表的主键

原创 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类提供了所需的数据库反射机制,从而使得这些应用的实现成为可能。

mysql查询数据库中各表的主键、自增标识

mysql查询数据库中各表的主键、自增标识
  • cai843383655
  • cai843383655
  • 2016-12-28 10:35:50
  • 5848

查找数据表的主键

大多数数据库有许多主键,但是在一个表中不允许两条记录的同一个主键具有相同的值。可以使用Java Database Connectivity(JDBC)来判断一个数据表的主键。  JDBC具有强大的元数...
  • chensheng913
  • chensheng913
  • 2004-08-19 22:21:00
  • 6354

Oracle中查找没有主键的表

SELECT * FROM user_tables A WHERE NOT EXISTS ( SELECT * FROM user_constraints b WHERE...
  • gjf281
  • gjf281
  • 2016-11-23 08:39:30
  • 17697

SQL语句查询<em>数据表主键</em>和所有字段

获取通过sql查询<em>数据</em>库的表,字段,<em>主键</em>,自增,字段类型等信息。 sqlserver查询字段是否为自增长或<em>主键</em> SQL 判断要添加列的表中是否有<em>主键</em> 如何用SQL 语法判断,...
  • 2018年04月13日 00:00

转:查找数据表的主键

大多数数据库有许多主键,但是在一个表中不答应两条记录的同一个主键具有相同的值。可以使用java Database Connectivity(JDBC)来判定一个数据表的主键。   JDBC具有强...
  • wzifuchuan
  • wzifuchuan
  • 2014-06-20 12:59:22
  • 202

使用JDBC查询表的主键

最近在做重构数据库表管理工作,今天遇到一个关于[给定表名称]取它的主键并进行其它关联操作. public String[] getTablePK(String tableCodes) throws E...
  • ybygjy
  • ybygjy
  • 2008-06-17 22:37:00
  • 2369

oracle中如何查找表的主键字段

select column_name from user_constraints c,user_cons_columns col where c.constraint_name=col.constra...
  • wenbingcai
  • wenbingcai
  • 2007-12-18 13:25:00
  • 1394

jdbc查找数据表的主键

导读:   大多数数据库有许多主键,但是在一个表中不允许两条记录的同一个主键具有相同的值。可以使用Java Database Connectivity(JDBC)来判断一个数据表的主键。   JDB...
  • alihoo
  • alihoo
  • 2008-06-23 11:40:00
  • 1886

mysql 查询数据库中没有主键的表

select table_schema,table_name from information_schema.tables  where (table_schema,table_name) not i...
  • yang131631
  • yang131631
  • 2017-12-26 11:51:58
  • 291
收藏助手
不良信息举报
您举报文章:查找数据表的主键
举报原因:
原因补充:

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