在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);
他们的表现如何?第二个语句是否等待第一个语句的完成,或者我们应该检查返回的值(受影响的行数)并使用第二个语句进行相应的操作吗?
答案 0 :(得分:4)
对executeUpdate
的调用不是异步的,因此在服务器上执行该语句之后才会返回。换句话说:这两个陈述是有效的,它们不会因为它们被一个接一个地执行而产生干扰。
答案 1 :(得分:1)
我认为该语句不能同时作为单个实例执行多个查询。
第二个语句将等到第一个语句完成并返回 第二个语句将仅在第一个语句完成后使用新查询进行设置。
这也适用于读取ResultSet的情况 文档说:
默认情况下,每个Statement对象只能同时打开一个ResultSet对象。因此,如果读取一个ResultSet对象与另一个ResultSet对象的读取交错,则每个ResultSet对象必须由不同的Statement对象生成。如果存在一个开放的对象,则Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象。
答案 2 :(得分:1)
答案取决于您是否为数据库启用了自动提交。
如果您启用了自动提交,则第二个语句将等待第一个语句完成并在执行前提交。
如果您关闭了自动提交,则第二个语句将在第一个语句之后执行,但在提交之前不会对数据库应用任何更改。