getCrossReference 方法 (SQLServerDatabaseMetaData)

下载 JDBC 驱动程序

检索给定外键表中的外键列的说明,该外键表引用给定主键表的主键列。

语法

  
public java.sql.ResultSet getCrossReference(java.lang.String cat1,  
                                            java.lang.String schem1,  
                                            java.lang.String tab1,  
                                            java.lang.String cat2,  
                                            java.lang.String schem2,  
                                            java.lang.String tab2)  

parameters

cat1

一个包含具有主键的表的目录名称的字符串

schem1

一个包含具有主键的表的构架名称的字符串

tab1

一个包含具有主键的表的表名称的字符串

cat2

一个包含具有外键的表的目录名称的字符串

schem2

一个包含具有外键的表的架构名称的字符串

tab2

一个包含具有外键的表的表名称的字符串

返回值

一个 SQLServerResultSet 对象。

例外

SQLServerException

备注

此 getCrossReference 方法是由 java.sql.DatabaseMetaData 接口中的 getCrossReference 方法指定的。

由 getCrossReference 方法返回的结果集将包含以下信息:

名称 类型 说明
PKTABLE_CAT 字符串 包含主键表的目录名称。
PKTABLE_SCHEM 字符串 主键表的架构名称。
PKTABLE_NAME 字符串 主键表的名称。
PKCOLUMN_NAME 字符串 主键的列名称。
FKTABLE_CAT 字符串 包含外键表的目录名称。
FKTABLE_SCHEM 字符串 外键表的架构名称。
FKTABLE_NAME 字符串 外键表的名称。
FKCOLUMN_NAME 字符串 外键的列名称。
KEY_SEQ short 多列主键中列的序列号。
UPDATE_RULE short SQL 操作为更新时对外键应用的操作。 可以为下列值之一:

importedKeyNoAction (3)

importedKeyCascade (0)

importedKeySetNull (2)

importedKeySetDefault (4)

importedKeyRestrict (1)
DELETE_RULE short SQL 操作为删除时对外键应用的操作。 可以为下列值之一:

importedKeyNoAction (3)

importedKeyCascade (0)

importedKeySetNull (2)

importedKeySetDefault (4)

importedKeyRestrict (1)
FK_NAME 字符串 外键的名称。
PK_NAME 字符串 主键的名称。
DEFERRABILITY short 指示对外键约束的计算是否可以延迟到提交时。 可以为下列值之一:

importedKeyInitiallyDeferred (5)

importedKeyInitiallyImmediate (6)

importedKeyNotDeferrable (7)

注意

有关 getCrossReference 方法返回的数据的详细信息,请参阅 SQL Server 联机丛书中的“sp_fkeys (Transact-SQL)”。

示例

以下示例演示了如何使用 getCrossReference 方法返回有关 AdventureWorks2022 示例数据库中 Person.Contact 和 HumanResources.Employee 表之间的主键和外键关系的信息。

public static void executeGetCrossReference(Connection con) {  
   try {  
      DatabaseMetaData dbmd = con.getMetaData();  
      ResultSet rs = dbmd.getCrossReference("AdventureWorks", "Person", "Contact", null, "HumanResources", "Employee");  
      ResultSetMetaData rsmd = rs.getMetaData();  
  
      // Display the result set data.  
      int cols = rsmd.getColumnCount();  
      while(rs.next()) {  
         for (int i = 1; i <= cols; i++) {  
            System.out.println(rs.getString(i));  
         }  
      }  
      rs.close();  
   }   
  
   catch (Exception e) {  
      e.printStackTrace();  
   }  
}  

另请参阅

SQLServerDatabaseMetaData 方法
SQLServerDatabaseMetaData 成员
SQLServerDatabaseMetaData 类