Java DatabaseMetaData getPrimaryKeys() 方法和示例!
此方法检索表的主键列的描述。它接受3个参数-
catalog-表示表所在目录(一般为数据库)名称的字符串参数,通过""获取没有目录的表中主键列的描述,如果不想,则传递null使用目录,从而缩小搜索范围。
schema-表示表架构名称的字符串参数,传递""以获取表中没有架构的列的描述,如果您不想使用架构,则传递null。
table-表示表名称的字符串参数。
此方法返回一个描述指定主键列的ResultSet对象。此对象保存以下详细信息的值(作为列名)-
要获取数据库中表的所需主键列的描述-
确保您的数据库已启动并正在运行。
使用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