我需要关于约束名称中表和列名称的信息。JDBC Metada检索约束信息
存在与connection.getMetadata()。getX类似的检索约束信息的人?
我的测试用例是Oracle数据库,但我的最好的解决方案我只是想用JDBC
我需要关于约束名称中表和列名称的信息。JDBC Metada检索约束信息
存在与connection.getMetadata()。getX类似的检索约束信息的人?
我的测试用例是Oracle数据库,但我的最好的解决方案我只是想用JDBC
如果你谈论的是外键和主键约束。 DatabaseMetaData
确实提供了检索此信息的方法:您可以使用getImportedKeys(..)
和getCrossReference(..)
作为外键,而getPrimaryKeys(..)
和getExportedKeys(..)
作为主键。
只是要小心你如何使用它们:getCrossReference(..)
和getExportedKeys
有点反直觉在我看来。
如果您还需要唯一约束,那么你应该能够使用getIndexInfo(..)
与传递true
的参数unique
。
你可以从USER_CONSTRAINTS
和ALL_CONSTRAINTS
表中定义的约束的信息来解决。
您需要传递where子句字段。
例:
select
CONSTRAINT_NAME,
CONSTRAINT_TYPE,
TABLE_NAME,
...
from
USER_CONSTRAINTS
where
CONSTRAINT_NAME like concat(?, '%');
不错,但我需要检索唯一的约束,谢谢, – jrey 2012-07-17 14:31:06
@ jrey.py查看我的答案更新。 – 2012-07-17 17:36:17
@ mark-rottevel非常感谢, – jrey 2012-07-18 15:24:55