`

查找数据表的主键

 
阅读更多
大多数数据库有许多主键,但是在一个表中不允许两条记录的同一个主键具有相同的值。可以使用JavaDatabaseConnectivity(JDBC)来判断一个数据表的主键。
  JDBC具有强大的元数据处理能力。java.sql.Connection类和java.sql.ResultSet类可以通过调用其getMetaData方法进行反射,例如:
//对java.sql中所有的类
Connectionconnection=.....
DatabaseMetaDatadbMeta=connection.getMetaData();

ResultSetrset=.....
ResultSetMetaDatarsMeta=rset.getMetaData();
java.sql.DatabaseMetaData类包含一个查找数据表主键的方法。你需要知道表的名字,catalog名和schema名。如果不知道catalog和schema,那么你可以不使用它们而输入“null”。例如:
//查找一个名字为“Comment”的表的主键
//没有catalog或schema,都设置为null
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类提供了所需的数据库反射机制,从而使得这些应用的实现成为可能。
分享到:
评论

相关推荐

    详解常用查找数据结构及算法(Python实现)

    查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 查找表(Search Table):由同一类型的数据元素(或记录)构成的集合 关键字(Key):数据元素中某个数据项...

    easycode生产mybitisplus的数据库操作模板,增删查改,外加按页查找已经根据非主键查询多条数据,测试可用

    easycode生产mybitisplus的数据库操作模板,增删查改,外加按页查找已经根据非主键查询多条数据,测试可用

    sap查询透明表方法--写的比较详细

    sap顾问在写开发功能说明书的取数时候,需要知道数据从哪些透明表存放,有时候F1并不能给出详细的答案,这时候就可用ST05来追踪程序读取的表,可以看到系统从哪里写进了数据。

    常用查找数据结构及算法(Python实现)

    查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找表(SearchTable):由同一类型的数据元素(或记录)构成的集合关键字(Key):数据元素中某个数据项的值...

    java一次性查询处理几百万数据解决方法

    java一次性查询处理几百万数据解决方法 几百万数据是可以处理的 暂时还没试过几千万级的数据处理

    PRIMARY KEY联合主键

    即主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据 ③一个字段名只能在联合主键字段表中出现一次 ④联合主键的最小化原则 即联合主键不能包含不必要的多余字段。当把联合...

    中国银保监会银行业金融机构监管数据标准化规范(2019版).xlsx

    “备注”栏所列“关联数据项”意为表之间数据项存在相关关系,用于指导银行机构填报存在相关关系的数据及监管查找关联数据之用。 8. 银行自定义数据项:由于银行机构业务和信息系统的差异性,规范中一些数据数据项...

    数据接口设计方案.doc

    " 数据同步log表: "属性名称 "字段名称 "数据类型 "备注 " "主键 "GUID "VARCHAR2(42) " " "数据来源单位 "FROM_DEPT "VARCHAR2(42) "数据来源部门编码" "同步表名称 "TB_TBNAME "VARCHAR2(50) " " "全表/增量同步 ...

    SYBASE数据库浏览器

    5 ★如果某表主键存在外键关联,被其他表引用,可通过右键菜单同时打开所有从表,对相关主键中的数据可 进行主/从表同步修改,彻底摆脱外键约束! 6 ★可自定义主/从表关联。对于物理上没有主/外键关联的表,可...

    基于Hbase的大数据查询优化

    因为面向列的特点,Hbase只能单单地以rowkey为主键作查询,而无法对表进行多维查询和join操作,并且查询通常都是全表扫描,耗费资源较大,查询效率较低。类比于传统型数据库里的一些查询方式,本文对Hbase的存储原理进行了...

    如何设计数据库表.doc

    客户表中可能包含唯一的 CustomerID 字段(通常是 Autonumber 字段),这个字段即该表的主键字段,其他表使用它来引用该客户。因此,发票表可以 只引用客户的 ID 值,而不是在每张发票中存储客户的所有信息(因为同...

    mysql学习———表的约束

    为了快速查找表中的某条信息,可以通过设置主键来实现。主键约束是通过PRIMATY KEY 定义的,它可以唯一标识表中的记录 在 mysql中,主键约束分为两种 注意:每个数据表中最多只能有一个主键约束,定义为 PRIMATY KEY...

    计算机二级公共基础知识

    例如,在一维数组[21,46,24,99,57,77,86]中,查找数据元素99,首先从第1个元素21开始进行比较,比较结果与要查找的数据不相等,接着与第2个元素46进行比较,以此类推,当进行到与第4个元素比较时,它们相等,...

    SQL语句大全.docx

    1.查看有哪些数据库 2.新建数据库 3.使用数据库(在我们的密令行中要先使用...左外链接 就是 左边表的数据全部查询 右边表符合条件的查询出来 右外链接 32.子查询 注意 子查询的结果 一定要和 另一个查询条件匹配

    存储引擎(C语言版本)_C语言内存管理_C语言内核编程_c语言数据结构_C语言存储引擎_

    基于双向链表及树结构的C语言实现版本,每页存储10000条记录,页数不限。支持快速查找、追加、更新、删除等操作。通过记录ID(主键)实现数据查找,支持正序、倒序查找等。

    大厂常见经典mysql面试题.rar

    索引是一种数据结构,它可以帮助我们快速查找数据。在MySQL中,使用CREATE INDEX语句来创建索引。索引可以加快SELECT语句的执行速度,特别是当数据量很大时。但是,在INSERT、UPDATE和DELETE语句中使用索引可能会...

    解决Oracle删除重复数据只留一条的方法详解

    查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,...

    数据库设计思路.doc

    楼盘数据 楼栋数据 房号数据 案例数据 统计数据 3日志类数据 为了数据都有据可查,以及错误的查找,设计了日志数据。 日志数据 4.用户类数据 为了系统的安全性,以及权限分割。 用户数据 权限数据 ----------------...

    C#增删改查操作Access数据库

    此外,设置了学号为主键,在添加数据到数据库前要判断一下是否已存在这样的学号。 删除:选中datagidview中一行数据,点击删除按钮则这一行数据在datagridview中删除同时在数据库中删除 更新:直接在datagirdview中...

Global site tag (gtag.js) - Google Analytics