一个Statement对象,多个executeUpdate

问题描述

| 建议仅创建一个Statement对象并对其执行多个executeUpdate()吗?
// Vantages/drawbacks of this solution?
conn.setAutocommit(false);

Statement stmt = conn.createStatement();
stmt.executeUpdate(\'[ANY_INSERT_sql]\');
stmt.executeUpdate(\'[ANY_INSERT_sql]\');
stmt.executeUpdate(\'[ANY_INSERT_sql]\');

conn.commit();
还是最好为每个executeUpdate一个Statement对象:
// Vantages/drawbacks of this solution?
conn.setAutocommit(false);

Statement stmt1 = conn.createStatement();
stmt1.executeUpdate(\'[ANY_INSERT_sql]\');
Statement stmt2 = conn.createStatement();
stmt2.executeUpdate(\'[ANY_INSERT_sql]\');
Statement stmt3 = conn.createStatement();
stmt3.executeUpdate(\'[ANY_INSERT_sql]\');

conn.commit();
提前致谢。 PS:我知道PreparedStatement类并且经常使用它,但是我对Statement的用法存有疑问。     

解决方法

        基于javadoc,一条语句只能有一个关联的“ 2”对象。   用于执行静态的对象   SQL语句并返回   它产生的结果。      默认情况下,只有一个ResultSet对象   每个Statement对象可以在以下位置打开   同时。因此,如果   读取一个ResultSet对象是   与阅读的交错   另一个,每个必须已经生成   通过不同的Statement对象。所有   语句中的执行方法   界面隐式关闭一个   语句的当前ResultSet对象,如果   一个开放的存在。 http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html 如果您需要同时处理多个结果集,也许可以使用更多的语句。 您可能只需要使用其中之一就可以了。 在性能方面,可能会更好,因为它可以保持较少的活动资源。     ,        没关系,只需确保关闭所有语句对象即可。