当前位置: 首页 > 知识库问答 >
问题:

如何使用相同的语句和结果集运行多个select查询?[副本]

柳灿
2023-03-14

我正在尝试编写一个简单的Java web应用程序来从数据库中获取数据。我需要在不同的数据库表上运行几个select查询。

String queryOne = "select firstname from employees where empid = id";
String queryOne = "select title from books where bookid = bid";
String queryOne = "select auther from books where bookid = bid";
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet rs1 = statement.executeQuery(queryOne);

while (rs1.nest()) {
String firstName = rs1.getString(1);
}
statement.close();
connection.close();

我只能用相同的语句运行一个查询。如何使用相同的语句执行多个查询?

共有1个答案

盖博简
2023-03-14

您也许可以将所需的查询存储在数组中,然后在数组中进行迭代,如下所示:

Connection conn = dataSource.getConnection();
try {
  Statement stmt = conn.createStatement();
  try {
    for (String q : queries) {  //queries is an array containing the 3 queries
      ResultSet rset = statement.executeQuery(q);
      try {
        rset.getString(1);
      } finally {
        rset.close();
      }
    }
  } finally {
    stmt.close();
  }
} finally {
  conn.close();
}

附注。最好将Connection、ResultSet和Statement对象封闭在try...finally块中,以便确保每次都能够关闭()它们。

 类似资料:
  • 来自Teradata,我通常会创建一个包含一些变量的易失性表,我会在代码中使用这些变量。 例如。, 然后我会在SELECT WHERE子句中使用该表: 我试图在色调(Impala editor)中执行类似的操作,但遇到了一个错误: AnalysisException:第5行中的语法错误:未定义:来自表名隐藏^遇到:来自预期的:大小写、强制转换、默认值、存在、FALSE、IF、INTERVAL、NO

  • 我正在将数据插入MySQL数据库,但在执行insert语句时出错: 语句的结果集不能为null。执行。 虽然如果我检查数据库表,我发现值已经成功插入。这是令人困惑的。 代码片段

  • 问题内容: 我试图了解MySQL存储过程,我想检查用户登录凭据是否有效,如果有效,请更新用户的在线状态: 如何基于结果集的行数== 1或id不为空的if语句? 问题答案: 注意:我还没有测试过。MySQL可能不喜欢针对当前为其打开了游标的表的UPDATE。 PS:您应该重新考虑如何存储密码。 重新评论vs. vs.结果集: 仅用于存储函数,不用于存储过程。当您要在另一个SQL表达式中调用例程时,将

  • 我有4个名为的表。我有 我正在组合起来,以便 中存在数据,则或中的数据 我怎样才能获得以上的功能?

  • 问题内容: 如何在SQL中遍历SELECT语句的结果?我的SELECT语句将仅返回1列,但返回n个结果。 我在下面创建了一个虚构的场景,其中包含我想做的事情的伪代码。 设想: 学生正在注册他们的课程。他们提交具有多个课程选择的表格(即一次选择3个不同的课程)。当他们提交注册时,我需要确保他们选择的课程还有剩余的空间(请注意,在向他们展示课程选择UI之前,我将进行类似的检查,但是之后我需要进行验证,

  • 问题内容: 我有一个数据库,正在运行以下查询: 上面的查询一次返回两个结果集,我不能分别触发两个查询。如何在Java类中一次处理两个结果集? 问题答案: 正确的代码来处理JDBC语句返回的多个: 重要位: 并返回以表明语句的结果只是一个数字,而不是一个。 您需要检查以了解是否还有更多结果。 确保关闭结果集或使用