建议只创建一个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类,我经常使用它,但我怀疑是语句使用。
答案 0 :(得分:4)
没关系,只要确保关闭所有语句对象。
答案 1 :(得分:1)
基于javadoc,A语句只能有一个关联的ResultSet
对象。
用于执行静态的对象 SQL语句并返回 它产生的结果。
默认情况下,只有一个ResultSet对象 每个Statement对象可以打开 同一时间。因此,如果 读取一个ResultSet对象是 交错阅读 另外,每个人都必须已经生成 通过不同的Statement对象。所有 Statement中的执行方法 接口隐式关闭a statment的当前ResultSet对象if 一个开放的存在。
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html
如果您需要同时处理多个结果集,也许更多的语句是有意义的。
可能更多时候,你只需要使用一个。
性能方面,可能更好,因为它可以减少活动资源。