java getmetadata_Java DatabaseMetaData getIndexInfo()方法与示例

此方法检索表索引的描述。它接受5个参数-catalog-代表目录名称(通常是数据库)的字符串参数,其中存在表(包含您需要描述的索引),传递“”以获取没有目录的表中索引的描述并且,如果不想使用目录,则传递null,从而缩小搜索范围。

schema-一个代表表模式名称的String参数,传递“”以获取不具有模式的表中列的描述,如果不想使用模式,则传递null。

表-表示表名称的字符串参数。

unique-一个布尔参数,如果为true,则此方法仅返回唯一值的索引;如果为false,则无论唯一值如何,均返回索引。

近似-一个布尔型参数,如果为true,则此方法返回近似值;如果为false,则此方法返回准确值。

此方法返回描述指定索引的ResultSet对象。该对象保存以下详细信息的值(作为列名)-栏名数据类型描述TABLE_CAT串表的目录。

TABLE_SCHEM串模式的目录。

TABLE_NAME串表名。

INDEX_QUALIFIER串这表示索引目录,当type为tableIndexStatistic时为null。

INDEX_NAME串索引名称。

类型短索引的类型。

ORDINAL_POSITION短索引的序列号。

COLUMN_NAME串列名。

基数整数当TYPE为tableIndexStatistic时,则为表中的行数;否则,它是索引中唯一值的数量。

FILTER_CONDITION串过滤条件。

获取数据库中所需索引的描述-确保您的数据库已启动并正在运行。

使用registerDriver()DriverManager类的方法注册驱动程序。传递与基础数据库相对应的驱动程序类的对象。

使用getConnection()DriverManager类的方法获取连接对象。将URL和数据库中的用户密码作为字符串变量传递给数据库。

使用getMetaData()Connection接口的方法获取有关当前连接的DatabaseMetaData对象。

最后,通过调用getIndexInfo()DatabaseMetaData接口的方法,获取包含所需列的描述的ResultSet对象。

示例

让我们创建一个名称为sample_database的数据库,并使用CREATE语句在其中创建一个表sample_table,如下所示-CREATE DATABASE example_database;CREATE TABLE example_database.sample_table(Name VARCHAR(255), age INT, Location VARCHAR(255));

现在,我们将使用INSERT语句在sample_table表中插入2条记录-insert INTO example_database.sample_table values('Kasyap', 29, 'Vishakhapatnam');

INSERT INTO example_database.sample_table values('Krishna', 30, 'Hyderabad');

Finally, create a n index with name sample_index on the above created table as:

mysql> CREATE INDEX sample_index ON sample_table (name) USING BTREE;

Records: 0 Duplicates: 0 Warnings: 0

下面的JDBC程序建立与MySQL数据库的连接,检索上面创建的索引的描述。import java.sql.Connection;

import java.sql.DatabaseMetaData;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

public class DatabaseMetaData_getIndexInfo {

public static void main(String args[]) throws SQLException {

//注册驱动程序

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

//获得连接

String url = "jdbc:mysql://localhost/example_database";

Connection con = DriverManager.getConnection(url, "root", "password");

System.out.println("Connection established......");

//检索元数据对象

DatabaseMetaData metaData = con.getMetaData();

//检索数据库中的列

ResultSet rs = metaData.getIndexInfo("example_database", null, "sample_table", false, false);

//打印列名称和大小

while (rs.next()) {

System.out.println("Table name: "+rs.getString("Table_NAME"));

System.out.println("Column name: "+rs.getString("COLUMN_NAME"));

System.out.println("Column name: "+rs.getString("NON_UNIQUE"));

System.out.println("Index name: "+rs.getString("INDEX_NAME"));

System.out.println(" ");

}

}

}

输出结果Connection established......

Table name: sample_table

Column name: Name

Column name: true

Index name: sample_index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值