Java DatabaseMetaData getPrimaryKeys() 方法及示例
DatabaseMetaData
DatabaseMetaData 是一个接口,提供访问数据库本身元数据的方法。
getPrimaryKeys() 方法
getPrimaryKeys() 方法是 Java 中 DatabaseMetaData 接口的一个方法,用于检索数据库中表的主键信息。 主键 是表中每条记录的唯一标识符。
它接受 3 个参数:
-
catalog - 表示表所在的目录(通常是数据库)名称的字符串参数,传递 "" 以获取没有目录的表的描述,如果不想使用目录,则传递 null 以缩小搜索范围。
-
schema - 表示表模式名称的字符串参数,传递 "" 以获取没有模式的表的描述,如果不想使用模式,则传递 null。
-
table - 表示表名称的字符串参数。
此方法返回一个 ResultSet 对象,描述指定的主键列。此对象包含以下详细信息(作为列名):
列名 |
数据类型 |
描述 |
---|---|---|
TABLE_CAT |
字符串 |
表的目录。 |
TABLE_SCHEM |
字符串 |
模式的目录。 |
TABLE_NAME |
字符串 |
表的名称。 |
COLUMN_NAME |
字符串 |
列的名称。 |
KEY_SEQ |
短整型 |
主键的序列号。 |
PK_NAME |
字符串 |
主键的名称。 |
访问主键元数据的步骤
要获取数据库中表所需主键列的描述:
-
确保您的数据库正在运行。
-
使用 DriverManager 类的 registerDriver() 方法注册驱动程序。传递与底层数据库对应的驱动程序类的对象。
-
使用 DriverManager 类的 getConnection() 方法获取连接对象。传递数据库的 URL 以及数据库中用户的用户名和密码,作为字符串变量。
-
使用 Connection 接口的 getMetaData() 方法获取当前连接的 DatabaseMetaData 对象。
-
最后,通过调用 DatabaseMetaData 接口的 getPrimaryKeys() 方法,获取包含所需主键列描述的 ResultSet 对象。
检索主键信息的代码实现
让我们使用以下所示的 CREATE 语句在 MySQL 数据库 中创建一个名为 cricketers_data 的表:
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 { //Registering the Driver DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Getting the connection String url = "jdbc:mysql://127.0.0.1/mydatabase"; Connection con = DriverManager.getConnection(url, "root", "password"); System.out.println("Connection established......"); //Retrieving the meta data object DatabaseMetaData metaData = con.getMetaData(); //Retrieving the columns in the database ResultSet rs = metaData.getPrimaryKeys("mydatabase", null, "cricketers_data"); //Printing the column name and size while (rs.next()){ System.out.println("Table name: "+rs.getString("TABLE_NAME")); System.out.println("Column name: "+rs.getString("COLUMN_NAME")); System.out.println("Catalog name: "+rs.getString("TABLE_CAT")); System.out.println("Primary key sequence: "+rs.getString("KEY_SEQ")); System.out.println("Primary key name: "+rs.getString("PK_NAME")); System.out.println(" "); } } }
输出
Connection established...... Table name: cricketers_data Column name: ID Catalog name: mydatabase Primary key sequence: 1 Primary key name: PRIMARY
代码解释
在提供的代码中,我们首先使用 DriverManager 类的 registerDriver() 方法注册 MySQL 驱动程序。然后,通过传递数据库的 URL 以及用户名和密码来建立与数据库的连接。连接建立后,我们检索一个 DatabaseMetaData 对象,该对象包含有关数据库的元数据。使用此 DatabaseMetaData 对象,调用 getPrimaryKeys() 方法,该方法检索指定表 (cricketers_data) 的主键详细信息。结果是一个 ResultSet 对象,从中提取表名、列名、目录、键序列和主键名称,并将其打印到控制台。