Java 通过JDBC将数据插入临时表时,对象名称无效

Java 通过JDBC将数据插入临时表时,对象名称无效,java,sql,jdbc,Java,Sql,Jdbc,我正在尝试使用URL(web浏览器)访问一个web应用程序。web应用程序使用JDBC调用创建数据并将其插入临时表。在创建表之前,我放置了一条语句来删除一个临时表,以确保它不在数据库中 偶尔,我会在Tomcat日志中看到以下错误 原因:java.sql.SQLException:无效的对象名称“#temp_table” 位于net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368) 位于net.sou

我正在尝试使用URL(web浏览器)访问一个web应用程序。web应用程序使用JDBC调用创建数据并将其插入临时表。在创建表之前,我放置了一条语句来删除一个临时表,以确保它不在数据库中

偶尔,我会在Tomcat日志中看到以下错误

原因:java.sql.SQLException:无效的对象名称“#temp_table”
位于net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
位于net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
位于net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
位于net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
位于net.sourceforge.jtds.jdbc.jtdstatement.processResults(jtdstatement.java:584)
位于net.sourceforge.jtds.jdbc.jtdstatement.executeSQL(jtdstatement.java:546)
位于net.sourceforge.jtds.jdbc.jtdstatement.executeImpl(jtdstatement.java:723)
位于net.sourceforge.jtds.jdbc.jtdstatement.execute(jtdstatement.java:1160)
我已经验证了SQL Server探查器日志,但没有得到任何线索。根据堆栈跟踪,插入数据时出现问题。请参阅以下代码段:

                   ..
                   ..
stmt.executeUpdate(
    "IF object_id('tempdb..#temp_table') IS NOT NULL DROP TABLE #temp_table");
stmt.execute("CREATE TABLE #temp_table([context] [varchar](100) NULL)");
stmt.execute("INSERT INTO #temp_table(context) VALUES ('" + context + "')");

有人能帮忙找出这个问题的原因吗?

你在多个会话中共享同一个打开的连接吗?@AlexK.-对有可能跨多个会话打开连接。我需要将我的实现放在同步块中吗?你禁用了自动提交吗?@MarkRotterVeel-如果禁用自动提交会有什么不同?你能详细说明一下吗?@dev11991我不确定这是否有什么不同。也许我应该要求一个新的。你能确定哪一行代码触发了异常。你在多个会话中共享同一个打开的连接吗?@AlexK.-对有可能跨多个会话打开连接。我需要将我的实现放在同步块中吗?你禁用了自动提交吗?@MarkRotterVeel-如果禁用自动提交会有什么不同?你能详细说明一下吗?@dev11991我不确定这是否有什么不同。也许我应该要求一个新的。请您确定哪一行代码触发了异常。