码农家园

关闭
导航

Java DatabaseMetaData getPrimaryKeys()方法与示例


adaasebasedatabasegetjavakeymetametadata

Java DatabaseMetaData getPrimaryKeys() method with example

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

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

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

< th style =" text-align:center;">列名

数据类型

描述
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

Copyright ©  码农家园 联系:[email protected]