检索给定外键表中的外键列的说明,该外键表引用给定主键表的主键列。
语法
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)
参数
cat1
包含具有主键的表的目录名称的 String。
schem1
包含具有主键的表的架构名称的 String。
tab1
包含具有主键的表的表名称的 String。
cat2
包含具有外键的表的目录名称的 String。
schem2
包含具有外键的表的架构名称的 String。
tab2
包含具有外键的表的表名称的 String。
返回值
异常
注释
此 getCrossReference 方法由 java.sql.DatabaseMetaData 接口中的 getCrossReference 方法指定。
由 getCrossReference 方法返回的结果集将包含下列信息:
名称 | 类型 | 说明 |
---|---|---|
PKTABLE_CAT | String | 包含主键表的目录名称。 |
PKTABLE_SCHEM | String | 主键表的架构名称。 |
PKTABLE_NAME | String | 主键表的名称。 |
PKCOLUMN_NAME | String | 主键的列名称。 |
FKTABLE_CAT | String | 包含外键表的目录名称。 |
FKTABLE_SCHEM | String | 外键表的架构名称。 |
FKTABLE_NAME | String | 外键表的名称。 |
FKCOLUMN_NAME | String | 外键的列名称。 |
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 | String | 外键的名称。 |
PK_NAME | String | 主键的名称。 |
DEFERRABILITY | short | 指示对外键约束的计算是否可以延迟到提交时。可以是下列值之一: importedKeyInitiallyDeferred (5) importedKeyInitiallyImmediate (6) importedKeyNotDeferrable (7) |
有关 getCrossReference 方法返回的数据的详细信息,请参阅 SQL Server 联机丛书中的“sp_fkeys (Transact-SQL)”。
示例
下列示例演示了如何使用 getCrossReference 方法返回有关 SQL Server 2005AdventureWorks 示例数据库中 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(); } }