如何使用 jdbc java 创建临时表

Posted

技术标签:

【中文标题】如何使用 jdbc java 创建临时表【英文标题】:how to create temp table using jdbc java 【发布时间】:2020-05-25 03:27:48 【问题描述】:

我需要创建一个临时表来存储一些 ID,我将在以后的查询中处理这些 ID。我收到错误

com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.

当我执行查询以在我的 sql 中创建 #temp 表时。我不需要此执行的任何结果集,只需要创建一个包含记录的临时表。请指导。

我的主要查询代码:


    String queryTempTable = "SELECT TOP (2) A.Id INTO #temp\n" +
                            "FROM  SALESDM.dbo.FactSales A\n" +
                            "INNER JOIN  SALESDM2.dbo.FactSales B\n" +
                            "ON A.Id = B.Id\n" +
                            "AND (\n" +
                            " A.sysDateModified = B.sysDateModified\n" +
                            " OR A.Id = B.Id\n" +
                            " OR A.ModifiedDatetime = B.ModifiedDatetime\n" +
                            " )";


                            System.out.println(queryTempTable);

                            if (conn == null) 
                                System.out.println("Unable to create Connection");
                             else 
                                Statement stmtTempTable = conn.createStatement();
                                stmtTempTable.executeQuery(queryTempTable);
                            


【问题讨论】:

检查这是否回答了您的问题。 ***.com/questions/4728495/… 【参考方案1】:

只有在检索数据并需要 ResultSet 时才应使用 executeQuery

如果你正在修改数据,那么你应该使用execute:

stmtTempTable.execute(queryTempTable);

【讨论】:

现在它没有显示任何错误,但它没有在我的数据库中创建任何#temp 表。 尝试从 SELECT 语句中删除 INTO,看看您的查询是否真的返回任何要插入临时表的结果。 您的意思是删除 "INTO #temp" ?是的,它工作并给了我需要转储到临时表中的结果。 尝试在查询末尾添加AS xSELECT... INTO... FROM... AS x 看看是否可行。 我认为添加“AS ...”将充当 Allias,但它已经是带有一个 SELECT 子句的主要查询。我试过这个,但它使我的查询错误。此外,我使用创建 VIEW 而不是 #temp 表,并且您在我的代码中建议的修改“execute()”在那里工作。谢谢。【参考方案2】:

如果可能的话,使用给定的查询创建一个视图?这将充当临时表。稍后根据您的要求调用视图。

【讨论】:

感谢@RajKumar,我尝试创建一个视图作为#temp 表的解决方法,它奏效了。

以上是关于如何使用 jdbc java 创建临时表的主要内容,如果未能解决你的问题,请参考以下文章

使用 JDBC 的 Oracle 临时表计数错误

Spark JDBC 找不到临时表

如何使用嵌入的 JPA 和 JavaDB 从 Java 代码创建数据库表?

如何使用 ANSI SQL 创建临时表?

使用 jdbc 语句创建和选择语句

如何创建连接本地的临时表,而无需强制使用简单的显式创建表语句?