连续executeUpdate()SQL语句的执行时间

时间:2012-07-10 15:20:59

标签: java sql sql-server tsql sql-update

在SQL数据库上使用多个连续的executeUpdate()方法有多安全?

考虑2个陈述:

st.executeUpdate("INSERT table SELECT col1,col2 FROM table WHERE ID=" +var_id);
st.executeUpdate("DELETE FROM table WHERE ID=" +var_id);

他们的表现如何?第二个语句是否等待第一个语句的完成,或者我们应该检查返回的值(受影响的行数)并使用第二个语句进行相应的操作吗?

3 个答案:

答案 0 :(得分:4)

executeUpdate的调用不是异步的,因此在服务器上执行该语句之后才会返回。换句话说:这两个陈述是有效的,它们不会因为它们被一个接一个地执行而产生干扰。

答案 1 :(得分:1)

我认为该语句不能同时作为单个实例执行多个查询。

第二个语句将等到第一个语句完成并返回 第二个语句将仅在第一个语句完成后使用新查询进行设置。

这也适用于读取ResultSet的情况 文档说:

  
    

默认情况下,每个Statement对象只能同时打开一个ResultSet对象。因此,如果读取一个ResultSet对象与另一个ResultSet对象的读取交错,则每个ResultSet对象必须由不同的Statement对象生成。如果存在一个开放的对象,则Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象。

  

答案 2 :(得分:1)

答案取决于您是否为数据库启用了自动提交。

如果您启用了自动提交,则第二个语句将等待第一个语句完成并在执行前提交。

如果您关闭了自动提交,则第二个语句将在第一个语句之后执行,但在提交之前不会对数据库应用任何更改。