Java DatabaseMetaData getPrimaryKeys() method with example
此方法检索表的主键列的描述。它接受3个参数-
- catalog-表示表所在目录(通常为数据库)的名称的字符串参数,传递"以获取没有目录的表中主键列的描述,如果不想使用,则传递null目录,从而缩小搜索范围。
- schema-一个String参数,表示表的模式名称,传递"以获取没有模式的表中列的描述,如果不想使用模式,则传递null。
- table-代表表名称的String参数。
此方法返回一个ResultSet对象,该对象描述指定的主键列。该对象保存以下详细信息的值(作为列名)-
数据类型 th> | 描述 th> | |
---|---|---|
TABLE_CAT | 字符串 | 表的目录。 |
TABLE_SCHEM | 字符串 | 模式目录。 |
TABLE_NAME | 字符串 | 表名。 |
COLUMN_NAME | 字符串 | 列名。 |
KEY_SEQ | 短 | 序列号为主键。 |
PK_NAME < / td> | 字符串 | 主键名称。 |
要获取数据库中表的必需主键列的描述,请执行以下操作:
- 确保您的数据库已启动并正在运行。
- 使用DriverManager类的registerDriver()方法注册驱动程序。传递与基础数据库相对应的驱动程序类的对象。
- 使用DriverManager类的getConnection()方法获取连接对象。将URL传递给数据库,并将用户名,数据库中用户的密码作为String变量传递给数据库。
- 使用Connection接口的getMetaData()方法获取有关当前连接的DatabaseMetaData对象。
- 最后,通过调用DatabaseMetaData接口的getPrimaryKeys()方法,获取保存所需主键列描述的ResultSet对象。
例
让我们使用CREATE语句在MySQL数据库中创建一个名为cricketers_data的表,如下所示-
1 2 3 4 5 6 7 8 | 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数据库的连接,检索上表的主键列的描述。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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://localhost/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(""); } } } |
输出量
1 2 3 4 5 6 | Connection established...... Table name: cricketers_data Column name: ID Catalog name: mydatabase Primary key sequence: 1 Primary key name: PRIMARY |