此方法检索表的主键列的描述。它接受 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