我正在try 使用H2数据库从一个查询返回两个表.然而,结果我只得到了一张桌子

以下是我的代码:

try {
    Connection connection = DriverManager.getConnection(h2_conn);
    Statement statement = connection.createStatement();

    // Execute a SQL query that returns multiple result sets
    String sql = "select * from `test1234` limit 1;" +
            "select * from `test1234` limit 2;";
    boolean hasMoreResults = statement.execute(sql);

    // Process each result set
    int resultSetNumber = 1;
    do {
        ResultSet resultSet = statement.getResultSet();
        while (resultSet.next()) {
            // Process the current result set
            System.out.println("Result Set " + resultSetNumber);
            System.out.println(resultSet.getString(1));
            System.out.println(resultSet.getString(2));
        }

        resultSetNumber++;

        hasMoreResults = statement.getMoreResults();
    } while (hasMoreResults);

    statement.close();
    connection.close();
} catch (Exception e) {
    e.printStackTrace();
}

这是否意味着不可能在一个查询中获得两个表结果?

关于这份文件,http://www.h2database.com/javadoc/org/h2/jdbc/JdbcStatement.html#getMoreResults--.

移动到下一个结果集-但是始终只有一个结果集.此调用还关闭当前结果集(如果有).如果有下一个结果集,则返回TRUE(这意味着-它总是返回FALSE).

推荐答案

根据您已经包含的文档,是的,您是正确的.您不能在这样的一条语句中执行两个查询.

幸运的是,解决方案很简单:只需将其分成两个语句,就可以了.

Java相关问答推荐

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

Java:根据4象限中添加的行数均匀分布行的公式

Java 21 struct 化连接货币,需要可预知的子任务异常排序

如何从错误通道回复网关,使其不会挂起

Java流传输一个列表并创建单个对象

Helidon 4和Http API

虚拟线程应该很快消亡吗?

Android Java:已设置但未读取SharedPreferences

无法播放音频:从资源加载库GStreamer-Lite失败

如何在列表(链表)中插入一个新 node (作为prelast)

如何在透视表中添加对计数列的筛选?

将stringBuilder + forloop转换为stream + map

如果第一位数字和最后一位数字相差超过一位,您将如何获得随机数?

如何从命令行编译包中的所有类?

Java嵌套流查找任意值

无限递归Java问题

读取ConcurrentHashMap中的可变对象

无泄漏函数的Java DRY

如何使用 Java 替换位于特定标记内的 XML 标记的 CDATA 内的值

Keycloak + Spring Boot 角色认证不起作用