我想在 Java Eclipse 中使用 JDBC 对上一个查询的 ResultSet 执行另一个 SQL 查询

Posted

技术标签:

【中文标题】我想在 Java Eclipse 中使用 JDBC 对上一个查询的 ResultSet 执行另一个 SQL 查询【英文标题】:I want to execute another SQL query on the ResultSet from the previous query using JDBC in Java Eclipse 【发布时间】:2013-10-16 14:31:09 【问题描述】:

我有一个刚刚在课堂上分配的 JDBC 项目,我们应该通过 JDBC Java Eclipse 对我们的大学数据库执行此查询:

SELECT dept_name, COUNT(*) AS COUNT FROM student GROUP BY dept_name;

并使用返回的 resultSet 查询结果集:

HAVING COUNT = (SELECT MAX(ACOUNT) AS MAXCOUNT
                FROM (SELECT dept_name, COUNT(*) AS ACOUNT
                      FROM student GROUP BY dept_name) AS ATable);

我在我的书中和通过 google 到处查看,但找不到有关如何执行此操作的示例的教程。你们可以指出我的任何链接/文档或起点吗?

解决方案编辑: 我终于得到了老师的澄清,他的意思是在我的 java 程序中执行 SQL 语句并循环遍历结果并使用 java 并筛选出第二个 SQL 语句将获取的相同信息,如果它附加到原始语句。 感谢那些花时间尝试和帮助的人。

【问题讨论】:

你不能对返回的ResultSet 执行查询,你最好解释你想要达到的目标,而不是你认为你应该怎么做(你有没有想过你可以只需在数据库上执行第二个查询)。 很确定你不能用 HAVING 这个词开始查询。它与 GROUP BY 结合使用。 "您的工作是通过 JDBC Java Eclipse 执行第一条 SQL 语句,生成结果集,并使用它在第一条查询语句生成的结果集上执行第二条 SQL 语句。"是我作业的准确报价 @NickJ 我也觉得这看起来很奇怪,但它再次增加了我的失落感。我给他发了一封电子邮件,但他要到明天才能再次来到他的办公室,我只是想我试着在这里口头处理并获得一些反馈。 您需要向您的导师寻求说明。您不能使用 SQL 查询 ResultSet。 【参考方案1】:

你的作业只提供了伪代码,“执行”这个词一定是错误的。正如其他人所建议的那样,“对结果集执行查询”是没有意义的。

假设您的导师的意思是“过滤掉”,您可能需要运行两个单独的语句(SELECT dept_name...SELECT MAX(...),然后遍历第一个结果集以搜索与第二个结果集匹配的结果。

伪代码:

RSet1 = query("SELECT dept_name, COUNT(*) AS COUNT FROM student GROUP BY dept_name;");
RSet2 = query("SELECT MAX(ACOUNT) AS MAXCOUNT ...");
RowInR2 = RSet2[0]; // first and only row

foreach RowInR1 in RSet1
    if (
        RowInR1.count = RowInR2.maxcount
    ) 
        return RowInR1; // this is your result
    

请记住,除了教育目的之外,这种方法是荒谬的。可以仅在一个查询中提取此数据(单行),而无需从 [Query 1] 提取和解析结果(此查询是您的两个查询的精确串联)。

【讨论】:

谢谢,这很有帮助。我确实相信他只是让我们出于教育目的进行此练习。向我们指出它可以在单独的查询中完成,这是代码可以多么动态的一个示例。

以上是关于我想在 Java Eclipse 中使用 JDBC 对上一个查询的 ResultSet 执行另一个 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

java和mysql数据库配置问题

使用clojure.java.jdbc在Clojure中使用外键约束

java-Eclipse中使用JDBC连接数据库

如何在 Gradle 项目中使用 Oracle JDBC 驱动程序

如何在 Eclipse IDE 中添加 JDBC API

使用 DataSource (Java Eclipse) 时“找不到适合 jdbc 的驱动程序”