You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NetBeans中创建临时表?SQL存入临时表报错解决

在NetBeans中用JDBC创建SQL Server临时表并插入数据的正确姿势

嘿,我来帮你搞定这个问题!你遇到的The statement did not return a result set异常,本质是用错了JDBC的执行方法——让我给你拆解清楚:

为什么会报错?

你写的SELECT INTO #person FROM registry语句,在SQL Server里属于DDL(数据定义语言)操作,它的作用是创建临时表并把查询结果插入进去,执行完成后不会返回任何结果集。但你用了executeQuery()方法,这个方法是专门用来执行会返回结果集的SELECT查询的,两者不匹配,所以JDBC抛出了这个异常。

正确的操作步骤

1. 用合适的方法执行临时表创建语句

对于不返回结果集的SQL(比如DDL、INSERT/UPDATE/DELETE),应该用executeUpdate()或者execute()方法来执行。示例代码如下:

// 假设con已经是你获取到的数据库连接对象
String createTempTableSQL = "SELECT name, age INTO #person FROM registry";
try (Statement stmt = con.createStatement()) {
    // executeUpdate会返回受影响的行数,也就是插入到临时表的数据量
    int insertedRows = stmt.executeUpdate(createTempTableSQL);
    System.out.println("临时表创建成功,共插入 " + insertedRows + " 条数据");
} catch (SQLException e) {
    e.printStackTrace();
}

2. 查询临时表的数据(如果需要)

如果之后要读取临时表的内容,再单独写SELECT语句,用executeQuery()来获取结果集:

String queryTempTableSQL = "SELECT name, age FROM #person";
try (Statement stmt = con.createStatement();
     ResultSet rs = stmt.executeQuery(queryTempTableSQL)) {
    // 遍历结果集处理数据
    while (rs.next()) {
        String name = rs.getString("name");
        int age = rs.getInt("age");
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

额外注意事项

  • SQL Server的#person是会话级临时表,只要当前数据库连接没有关闭,它就会存在;连接关闭后会自动被销毁,不用手动删除。
  • 尽量使用try-with-resources语法(如上代码所示),它会自动帮你关闭Statement、ResultSet这些资源,避免内存泄漏。

内容的提问来源于stack exchange,提问作者luana nastasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:58:19