Java DatabaseMetaData getPrimaryKeys() 方法和示例

此方法检索表的主键列的描述。它接受 3 个参数 -

  • catalog - 表示表所在目录(一般为数据库)名称的字符串参数,通过 "" 获取没有目录的表中主键列的描述,如果不想,则传递 null使用目录,从而缩小搜索范围。

  • schema - 表示表架构名称的字符串参数,传递 "" 以获取表中没有架构的列的描述,如果您不想使用架构,则传递 null。

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

此方法返回一个描述指定主键列的 ResultSet 对象。此对象保存以下详细信息的值(作为列名) -

列名
数据类型
描述
TABLE_CAT
细绳
Catalog of the table.
TABLE_SCHEM
细绳
Catalog of the schema.
TABLE_NAME
细绳
Name of the table.
COLUMN_NAME
细绳
Name of the column.
KEY_SEQ
短的
Sequence number a primary key.
PK_NAME
细绳
主键的名称。

要获取数据库中表的所需主键列的描述 -

  • 确保您的数据库已启动并正在运行。

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

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

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

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

示例

让我们使用 CREATE 语句在 MySQL 数据库中创建一个名为cricketers_data的表,如下所示 -

CREATE TABLE cricketers_data(
   ID INT,
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255),
   PRIMARY KEY (ID));

当您观察到上表中名为“ID”的列被声明为主键列时。

以下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_getPrimaryKeys {
   public static void main(String args[]) throws SQLException {
      //注册驱动程序
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //获取连接
      String url = "jdbc:mysql://localhost/mydatabase";
      Connection con = DriverManager.getConnection(url, "root", "password");
      System.out.println("连接已建立......");
      //检索元数据对象
      DatabaseMetaData metaData = con.getMetaData();
      //检索数据库中的列
      ResultSet rs = metaData.getPrimaryKeys("mydatabase", null, "cricketers_data");
      //打印列名和大小
      while (rs.next()){
         System.out.println("表名: "+rs.getString("TABLE_NAME"));
         System.out.println("列名: "+rs.getString("COLUMN_NAME"));
         System.out.println("目录名称: "+rs.getString("TABLE_CAT"));
         System.out.println("主键序列: "+rs.getString("KEY_SEQ"));
         System.out.println("主键名称: "+rs.getString("PK_NAME"));
         System.out.println(" ");
      }
   }
}
输出结果
连接已建立......
表名: cricketers_data
列名: ID
目录名称: mydatabase
主键序列: 1
主键名称: PRIMARY