我正在尝试使用普通 JDBC 制作一段代码,该代码可以获取目标表的名称和特定表中特定列的外键列的名称,但是通过核心接口我似乎找不到直接的方法来做到这一点。
有没有办法直接通过 JDBC 获取有关外键的此类信息,或者我是否必须求助于特定数据库的元数据查询,在这种情况下是 HSQLDB。
如果我必须使用特定于数据库的元数据查询,哪些 HSQLDB 内部元数据表包含该信息?
您最好的选择是Connection#getMetaData()
返回DatabaseMetaData
所有方法以获取有关所有表、列、主键、外键等的信息。但是,您依赖于 JDBC 实现(阅读:JDBC 驱动程序制造/版本)是否完全支持。
JDBC 确实支持这一点。查看DatabaseMetaData.getCrossReference类。DatabaseMetdata 上的其他方法支持查询模式、目录、表、列等。请记住,某些数据库需要您的 URL 上的额外参数来打开元数据(即 Oracle)以优化调用。不知道 HQLSB 是否需要这个。