使用 JDBC 获取所有外键

2024-04-14

我正在使用 postgreSQL。我正在尝试从表中获取所有外键。这是我目前正在使用的方法。

public String getFKeyData(String tableName, int i) throws SQLException {
    DatabaseMetaData dm = connection.getMetaData();
    ResultSet rs = dm.getImportedKeys(null, null, tableName);
    while (rs.next()) {
        fkTableData = rs.getString(i);
    }
    return fkTableData;
}

这段代码可以工作,但它只能获取最后一个外键,如果表中只有一个外键,这很好,但这不符合我的需求。我在网上查看的所有示例都与此非常相似,并且只提供一个外键作为输出。 目前我只是在按下按钮时打印数据。

System.out.println(databaseConnection.getFKeyData(tableName,3));
System.out.println(databaseConnection.getFKeyData(tableName,4));
System.out.println(databaseConnection.getFKeyData(tableName,8));

3 获取导入外键的表。 4 获取导入的主键列的名称。 8 获取外键列的名称。 如果有人可以提供帮助,我将不胜感激。


即使你的 while 循环迭代整个ResultSet,该函数将仅返回 FK 约束中的最后一列,因为在每次迭代中您都会覆盖上一次迭代的值 (fkTableData = rs.getString(i);)。顺便说一句:`fkTableData 实际上应该是方法的局部变量,而不是实例变量。

你的函数应该返回一个List<String> not a String.

另外:您正在打电话getImportedKeys() 每列一次在结果集中。这是极其低效的。如果您使用的是 Oracle,您会立即注意到这一点,因为在那里检索 FK 信息非常慢(Postgres 在访问系统目录时要快得多)。

As getImportedKeys()为每个 FK 返回一行column您还需要收集属于一个单一约束定义(即一个父/子表组合)的所有行。

可能最好的办法是定义一个类PkDefinition存储所有涉及的列和涉及的表名,并让您的函数返回List<PkDefinition>以避免多次调用同一结果集行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JDBC 获取所有外键 的相关文章

  • 如何防止在 CXF Web 服务客户端中生成 JAXBElement

    我正在尝试使用 CXF 创建一个 Web 服务客户端来使用 WCF Web 服务 当我使用 wsdl2java 时 它生成具有 JAXBElement 类型而不是 String 的对象 我读到有关使用 jaxb bindings xml 文
  • 在 Tomcat 上部署 Java Web 项目,无需 WAR 或 EAR

    我有一个 Java Web 项目 Struts Spring 在我的本地主机上完美运行 我必须将其部署在我的网站上 但虚拟主机提供的 Tomcat Manager 界面显示 由于安全原因 它无法上传 WAR 文件 当联系技术支持时 我被告知
  • JBoss AS 5 中的共享库应该放在哪里?

    我是 Jboss 新手 但我有多个 Web 应用程序 每个应用程序都使用 spring hibernate 和其他开源库和 portlet 所以基本上现在每个 war 文件都包含这些 jar 文件 如何将这些 jar 移动到一个公共位置 以
  • java中队列的实现

    在 Java 中实现队列是一个非常常见的面试问题 我在网上冲浪 看到了许多实现 他们做了一些奇特的事情 比如实现队列接口和编写自己的addLast and removeFirst 方法 我的问题是我不能使用LinkedList 类并使用其预
  • FFmpeg 不适用于 android 10,直接进入 onFailure(String message) 并显示空消息

    我在我的一个项目中使用 FFmpeg 进行视频压缩 在 Android 10 Google Pixel 3a 上 对于发送执行的任何命令 它会直接进入 onFailure String message 并显示空消息 所以我在我的应用程序 g
  • 为什么一个线程会中断另一个线程[重复]

    这个问题在这里已经有答案了 在Java多线程应用程序中 我们处理InterruptedThreadException 如果另一个线程中断当前线程 则会抛出此异常 现在 当另一个线程知道它将导致异常时 它可能想要中断当前线程的原因是什么 很多
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • PostgreSQL:在所有表字段的长度上创建索引

    我有一张桌子叫profile 我想按照填写最多的内容对它们进行排序 每列都是 JSONB 列或 TEXT 列 我不需要很大程度的确定性 所以通常我会按如下方式订购 SELECT FROM profile ORDER BY LENGTH CO
  • 无法在 Mac OS X 上启动应用程序 我收到错误 LSOpenURLsWithRole() 应用程序失败,错误为 -10810

    问题 我正在尝试启动一个应用程序 遗传网络分析仪 http www genostar com category products gna 但它默默地失败了 使用时open gna app产生以下错误消息 LSOpenURLsWithRole
  • JavaFx 中装饰且不可移动的舞台

    我想在 JavaFx 中创建一个装饰舞台 它也将不可移动 我正在从另一个控制器类创建这个阶段 我能够创造和展示舞台 但它是自由移动的 我怎样才能创建这个 非常感谢帮助和建议 我把打开新关卡的方法贴出来 private void addRec
  • 如何使用 Spring MVC 和 Thymeleaf 添加静态文件

    我的问题是如何添加 CSS 和图像文件等静态文件 以便我可以使用它们 我正在使用 Spring MVC 和 Thymeleaf 我查看了有关此主题的各种帖子 但它们对我没有帮助 所以我才来问 根据这些帖子 我将 CSS 和图像文件放在res
  • Scala(或 Java)中泛型函数的特化

    是否可以在 Scala 中专门化泛型函数 或类 例如 我想编写一个将数据写入 ByteBuffer 的通用函数 def writeData T buffer ByteBuffer data T buffer put data 但由于 put
  • 如何将txt文件添加到你的android项目中? [复制]

    这个问题在这里已经有答案了 我的Android studio版本是1 5 1 显然这个 never 版本没有 txt 文件的 asset 文件夹 您打算如何将这些文件包含到您的项目中 以及如何进一步使用您内部的应用程序 谢谢你的建议 Pro
  • Hibernate @OneToMany 注释到底是如何工作的?

    我对 Hibernate 还很陌生 我正在通过教程学习它 我在理解到底如何一对多注释作品 所以我有这两个实体类 Student代表一个学生并且Guide代表指导学生的人 因此 每个学生都与一名向导相关联 但一名向导可以跟随多个学生 我想要一
  • 如何在 Java 中创建要打印到 JFrame 的 JLabels 数组

    我正在尝试制作一系列标签 每个标签都有一个来自函数的不同值 我不知道要使用的标签的确切数量 我的意思是可以打印任意数量的值 请帮我做这件事 很简单 只需一个方法返回一个数组或一些 JLabels 集合 并将它们全部添加到您的 JCompon
  • 在 netBeans 中运行程序时,字体看起来非常奇怪

    我在我的新 MacBook M1 上设置了 netBeans 和 SceneBuilder 除了运行程序时的字体外 一切正常 它看起来像这样 我不知道为什么 按钮应显示 Click me 标签应显示 Hello 我收到的错误消息是 M rz
  • 在单个查询中设置和选择?

    我想知道是否可以在单个查询中设置和选择 像这样的事情 SET LOCAL search path TO 1 SET LOCAL ROLE user SELECT from posts 你可以这样做 with some set as sele
  • 如何使用 SAX Java 解析器读取注释文本

    我只想使用 Java 中的 SAX 解析器读取 XML 文件中对象标记的注释 这是我的文件的摘要
  • 如何使用maven创建基于spring的可执行jar?

    我有一个基于 Maven 的 Spring WS 客户端项目 我想将其打包为单个 jar 在eclipse中 一切运行正常 当我尝试将其打包为可执行 jar 时 我收到 ClassNotFound 异常 因为 Spring jar 未包含在
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN

随机推荐

  • 未重定向到 Codeigniter 4 中的特定 URL

    为什么每当我通过 Codeigniter 4 控制器的构造函数重定向某些内容时就不起作用
  • 在php中获取今天和昨天的时间戳

    如何使用php中的strtotime 函数获取今天 昨天和前天12点的时间戳 12 点钟是一个变量 可以由用户更改 hour 12 today strtotime hour 00 00 yesterday strtotime 1 day t
  • 我可以在 Visual Studio (c++) 中设置断点以在线程上下文切换时中断吗?

    我们只想打破某个线程 知道该怎么做吗 我似乎找不到打破这个条件的方法 我应该在文字中更具体 正如标题所示 我想中断上下文切换到线程中 您需要设置断点过滤器 右键单击断点并选择 Filter 选项 它将显示一个对话框 允许您将断点过滤到特定的
  • 在覆盖 ProcessCmdKey EventHandler 时跳过 KeyDown

    我通过按向下箭头键在文本框上进行了简单的增量 如下所示 protected override bool ProcessCmdKey ref Message msg Keys keyData if keyData Keys Down int
  • CLLocationManager 坐标

    我一直致力于实现步行 骑自行车和开车的路线跟踪图 然而 正如您在下面的屏幕截图中看到的那样 即使我没有步行 骑自行车或开车前往该位置 我的坐标也会时不时地突然跳跃 在图像上画了圆圈来指出问题 我的问题是为什么坐标突然跳跃 这是我的实施快照
  • IP_RECVERR 的 OSX 等效项

    我正在尝试将 TraceRoute 程序从 Linux 移植到 OSX 但在找到 IP RECVERR 等效项时遇到问题 大多数人进行数据包解析的方式是 setsockopt sock IPPROTO IPV4 IP RECVERR on
  • 车把中的“{{{variable}}}”是什么意思?

    三重花括号在车把模板语法中意味着什么 例如 variable 我找不到任何文档 Thanks 因为它最初设计用于生成 HTML 所以 Handlebars 转义了由 expression 如果您不希望 Handlebars 转义值 请使用
  • Memcached 与 Windows 和 .NET

    有没有人已经在 Windows 环境中实现了 memcached 以供生产使用 因为我读过很多博客 不建议在 Windows 中运行 memcached 尤其是用于生产用途 例如在 Windows 上运行 memcached http la
  • 如何将 Citrix 中的 C# 程序实例限制为每用户 1 个

    我有一个带有 C 代码的 Windows 窗体应用程序 如下所示 针对 NET Framework 4 在我的开发人员工作站上 此代码可以阻止我启动该程序的多个实例 但是 QA 有一个 Citrix 测试环境 每个用户仍然能够启动多个实例
  • 使用 r.js 打包使用“文本”加载视图的 SPA 应用程序

    我正在尝试使用 grunt 将 SPA 应用程序 requirejs durandal 2 knockout 构建到单个 main build js 文件中 并且我遇到了 durandal 用于加载我的 文本 插件的严重问题意见 在开发中
  • 如何将单行拆分为多行并插入到 Oracle 中的表中?

    我从表中选择数据Employee Master使用下面的查询 SELECT EMP ID EMP NAME EMP LOC1 EMP LOC2 EMP LOC3 EMP DESG EMP ADDR1 EMP ADDR2 EMP ADDR3
  • android studio 3.4 中的 R.java 文件

    我只是想学习android开发 并且正在使用最新版本的android studio 但是 我找不到R java我的文件夹树视图中的文件 我还清理并重建了我的项目 但我仍然看不到 source R文件夹也不R java file 我也在学习
  • 我的 PHP 应用程序是否正确支持 UTF-8?

    我想确保我所知道的有关 UTF 8 的一切都是正确的 我已经尝试使用 UTF 8 一段时间了 但我不断遇到越来越多的错误和其他奇怪的事情 这使得拥有 100 UTF 8 网站几乎不可能 总有一些地方是我似乎想念的 也许这里有人可以更正我的列
  • 从 A 系列升级到 D 系列 Azure 虚拟机

    我们在 A 系列虚拟机上安装了 SQL Sever 我们想要升级到 D 系列虚拟机 是否只是在 Azure 中升级 VM 并单击 保存 那么简单 或者还有其他我需要注意的事情吗 我听说有人因为虚拟机所在的集群中不可用的级别而遇到升级问题 A
  • 是否有适用于 Nunit 的免费 Visual Studio 插件?

    我很便宜 不想支付 ReSharper 或 TestDriven NET 的费用 是否有适用于 NUnit 的免费 Visual Studio 插件 您可以创建一个空白项目 例如选择控制台应用程序 并在项目的属性中选择 DEBUG 标签并选
  • 如何测试某个地理位置是否在“现实世界”中被访问过?

    好的 所以我已经有了这个问题的答案 但我花了很长时间才找到答案 所以我想我会分享它 特别是因为someone https stackoverflow com users 975457 fusion27问我但在不相关的问题 https sta
  • 在 Maven 测试范围中运行时,如何排除提供的范围中的依赖项?

    在 Maven 测试范围中运行时 如何排除提供的范围中的依赖项 我有一个不寻常的用例 我需要排除特定提供的实现并将其替换为测试用例中的另一个实现 Maven 测试似乎也总是包含其他范围 但就我而言 我想破例 我该怎么做呢 在某些情况下 您需
  • 如何异步等待直到我从数据库收到数据?

    我正在尝试创建可以通过屏幕访问的商店 文件结构 索引 ios js app index js app store database js app store userStore js 索引 ios js import AppRegistry
  • 如何解释无效的 CSS 行?

    我花了大约30分钟调试字体加载 https stackoverflow com q 20900218 1420197页面出现问题 我终于发现我使用了错误的注释 this is a comment font face is this igno
  • 使用 JDBC 获取所有外键

    我正在使用 postgreSQL 我正在尝试从表中获取所有外键 这是我目前正在使用的方法 public String getFKeyData String tableName int i throws SQLException Databa