DatabaseMetaData.getIndexInfo

article/2025/11/11 7:14:02

示例

通过 DatabaseMetaData.getIndexInfo() 获取索引信息。

public static void getIndexInfo() throws Exception {Connection conn = getConnection();ResultSet rs = null;try {DatabaseMetaData dbmd = conn.getMetaData();rs = dbmd.getIndexInfo("test", "test", "uspider_task", false, false);ResultSetMetaData md = rs.getMetaData();while (rs.next()) {for (int i = 1; i <= md.getColumnCount(); i++) {System.out.println(md.getColumnName(i) + "==" + rs.getObject(i));}}} catch (SQLException e) {e.printStackTrace();} finally {conn.close();}}

输出信息如下:

TABLE_CAT==test
TABLE_SCHEM==null
TABLE_NAME==uspider_task
NON_UNIQUE==false
INDEX_QUALIFIER==
INDEX_NAME==PRIMARY
TYPE==3
ORDINAL_POSITION==1
COLUMN_NAME==task_id
ASC_OR_DESC==A
CARDINALITY==0
PAGES==0
FILTER_CONDITION==null

Api 说明

ResultSet getIndexInfo(String catalog,String schema,String table,boolean unique,boolean approximate)throws SQLException

参数:

  • catalog : 类别名称,因为存储在此数据库中,所以它必须匹配类别名称。该参数为 “” 则检索没有类别的描述,为 null 则表示该类别名称不应用于缩小搜索范围
  • schema : 模式名称,因为存储在此数据库中,所以它必须匹配模式名称。该参数为 “” 则检索那些没有模式的描述,为 null 则表示该模式名称不应用于缩小搜索范围
  • table : 表名称,因为存储在此数据库中,所以它必须匹配表名称
  • unique : 该参数为 true 时,仅返回惟一值的索引;该参数为 false 时,返回所有索引,不管它们是否惟一
  • approximate : 该参数为 true 时,允许结果是接近的数据值或这些数据值以外的值;该参数为 false 时,要求结果是精确结果

检索给定表的索引和统计信息的描述。它们根据 NON_UNIQUE、TYPE、INDEX_NAME 和 ORDINAL_POSITION 进行排序。
每个索引列描述都有以下列:

  • TABLE_CAT String => 表类别(可为 null)
  • TABLE_SCHEM String => 表模式(可为 null)
  • TABLE_NAME String => 表名称
  • NON_UNIQUE boolean => 索引值是否可以不惟一。TYPE 为 tableIndexStatistic 时索引值为 false
  • INDEX_QUALIFIER String => 索引类别(可为 null);TYPE 为 tableIndexStatistic 时索引类别为 null
  • INDEX_NAME String => 索引名称;TYPE 为 tableIndexStatistic 时索引名称为 null
  • TYPE short => 索引类型:
  • tableIndexStatistic - 此标识与表的索引描述一起返回的表统计信息
  • tableIndexClustered - 此为集群索引
  • tableIndexHashed - 此为散列索引
  • tableIndexOther - 此为某种其他样式的索引
  • ORDINAL_POSITION short => 索引中的列序列号;TYPE 为 tableIndexStatistic 时该序列号为零
  • COLUMN_NAME String => 列名称;TYPE 为 tableIndexStatistic 时列名称为 null
  • ASC_OR_DESC String => 列排序序列,”A” => 升序,”D” => 降序,如果排序序列不受支持,可能为 null;TYPE 为 tableIndexStatistic 时排序序列为 null
  • CARDINALITY int => TYPE 为 tableIndexStatistic 时,它是表中的行数;否则,它是索引中惟一值的数量。
  • PAGES int => TYPE 为 tableIndexStatisic 时,它是用于表的页数,否则它是用于当前索引的页数。
  • FILTER_CONDITION String => 过滤器条件,如果有的话。(可能为 null)

返回:

  • ResultSet: 每一行都是一个索引列描述
    抛出:
  • SQLException: 如果发生数据库访问错误

想了解更多精彩内容请关注我的公众号


http://chatgpt.dhexx.cn/article/03osiqyZ.shtml

相关文章

数据库元数据 DatabaseMetaData

一、元数据介绍 &#xff08;数据库元数据 DatabaseMetaData&#xff09; 数据库元数据指的是"数据库的定义信息。 DataBaseMetaData元数据获取方式 通过Connection.getDatabaseMetaData()方法获得代表DatabaseMetaData元数据的DatabaseMetaData对象。DataBaseMetaData…

DatabaseMetaData类的getTable()、getColumns()方法使用,以及参数的传递问题,针对oracle、mysql、postgres三种数据库进行举例

DatabaseMetaData类 DatabaseMetaData实例的获取获取数据库属性的方法getTable()方法getColumns()方法关于参数一参数二传参问题 DatabaseMetaData类是java.sql包中的类&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等很多信息。如&#xff1a; 1、数据库与用户&a…

数据库之元数据——DatabaseMetaData的getMetaData()方法的简单使用

DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口&#xff0c;本文讲解DatabaseMetaData和ResultSetMetaData接口获取元数据的方法。 package com;import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverMa…

DatabaseMetaData的简单使用

在看大佬写的一个导出数据库建标脚本的接口的时候&#xff0c;发现频频用到DataBaseMetaData这个类&#xff0c;之前也没有 用过这个类下的API&#xff0c;记录一下心得用法。 DatabaseMetaData是java.sql包中的接口&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等…

DatabaseMetaData类

DatabaseMetaData类是java.sql包中的类&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等很多信息。如&#xff1a; 1、数据库与用户&#xff0c;数据库标识符以及函数与存储过程。 2、数据库限制。 3、数据库支持不支持的功能。 4、架构、…

数据库之-元数据 DatabaseMetaData 初学

DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口&#xff0c;本文讲解DatabaseMetaData和ResultSetMetaData接口获取元数据的方法。 获取数据库的所有表&#xff1a;(以MySQL和Oracle为例&#xff0c;其他类型的数据库接触不过&#xff0c;…

php备忘录模式

CleverCode最近在看备忘录模式。 1 模式介绍 在不破坏封闭的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 2 模式中的角色 1.Originator(发起人)&#xff1a;负责创建一个备忘录Memento&…

设计模式 — 行为型模式 — 备忘录模式

目录 文章目录 目录备忘录模式应用场景代码示例 备忘录模式 备忘录模式&#xff0c;在不破坏封闭的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 简单来说&#xff0c;就是在运行过程中我们…

“备忘录模式”就这么简单

备忘录模式的官方定义&#xff1a; 在不破坏封装性的前提下&#xff0c;获取一个对象的内部状态&#xff0c;并在该对象之外保存这些状态。这样以后就可以通过该对象恢复到原先保存的状态。 大白话说&#xff1a; 一个对象中一般都封装了很多属性&#xff0c;这些属性的值会随…

(18)备忘录模式

&#xfeff;&#xfeff; &#xff08;18&#xff09;备忘录模式 定义&#xff1a;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 类型&#xff1a;行为类 类图&#xff1a; 我们…

Java设计模式-备忘录模式、备忘录模式应用场景是什么、又怎么使用

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库Java设计模式克隆下载学习使用&#xff01; 6.11 备忘录模式 6.11.1 定义 又称快照模式&#xff0c;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存此状态&am…

C++设计模式(17)——备忘录模式

亦称&#xff1a; 快照、Snapshot、Memento 意图 备忘录模式是一种行为设计模式&#xff0c; 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 问题 假如你正在开发一款文字编辑器应用程序。 除了简单的文字编辑功能外&#xff0c; 编辑器中还要有设置文本格…

Java备忘录模式(Memento)

本文我们来介绍下java23种设计模式中的备忘录模式。 备忘录模式Memento 使用场景 录入大批人员资料。正在录入当前人资料时&#xff0c;发现上一个人录错了&#xff0c; 此时需要恢复上一个人的资料&#xff0c;再进行修改。Word文档编辑时&#xff0c;忽然电脑死机或断电&a…

Java设计模式之备忘录模式

Java设计模式之备忘录模式 1. 备忘录模式概述1.1 备忘录模式简介1.2 备忘录模式类图1.3 备忘录模式的注意事项和细节 2. 备忘录模式实现2.1 项目说明2.2 项目实现 1. 备忘录模式概述 1.1 备忘录模式简介 1.备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的…

【设计模式】备忘录模式

设计模式总结链接 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式&#xff0c;是对象的行为模式。   备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下&#xff0c;将一个对象的状态捕捉(Capture)住&#xff…

23种设计模式——备忘录模式

目录 备忘录模式&#xff08;Memento&#xff09; UML图 示例代码 适用场景 优缺点 备忘录模式和原型模式 例子——游戏进度存档 例子——象棋中的悔棋 备忘录模式&#xff08;Memento&#xff09; 本质&#xff1a;保存和恢复内部状态 备忘录模式&#xff1a;在不破坏…

23种设计模式之---备忘录模式

前言 网上搜索备忘录设计模式&#xff0c;基本上均是在一个GoF&#xff0c;基础上衍生下来的。为了避免重复造轮子&#xff0c;这里会结合网上demo&#xff0c;和自己理解进行总结 定义&#xff1a;备忘录&#xff08;Memento&#xff09;模式又称标记&#xff08;Token&…

备忘录模式介绍

备忘录模式介绍 一、基本介绍二、代码实现三、UML类图四、备忘录模式小结其他设计模式 一、基本介绍 备忘录模式&#xff08;Memento Pattern&#xff09;属于行为型模式&#xff0c;是指在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外…

设计模式 | 备忘录模式及典型应用

本文的主要内容&#xff1a; 介绍备忘录模式示例备忘录模式总结 备忘录模式 备忘录模式经常可以遇到&#xff0c;譬如下面这些场景&#xff1a; 浏览器回退&#xff1a;浏览器一般有浏览记录&#xff0c;当我们在一个网页上点击几次链接之后&#xff0c;可在左上角点击左箭头…

设计模式之备忘录模式

一、备忘录模式 备忘录模式&#xff08;Memento Pattern&#xff09;保存一个对象的某个状态&#xff0c;以便在适当的时候恢复对象。备忘录模式属于行为型模式。 原发器(Originator)角色&#xff1a;原发器根据需要决定将自己的哪些内部状态保存到备忘录中&#xff0c;并可以使…