goes...@gmail.com
unread,May 4, 2009, 5:22:08 AM5/4/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to goeswind
下面是我写的测试代码:
public class TestDbBatch extends TestCase {
// 批处理提交数量
public static final int BATCH_COMMIT_COUNT = 2;
public void test11() {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = getConnection();
conn.setAutoCommit(false);
String sql = "insert into AM_ANNUAL_REVIEW
(SERVICEID,DWBH,GRBH,NAME) values(?,?,?,?)";
pstmt = conn.prepareStatement(sql);
List<String> lst = getData();
int i = 0;
for (String s : lst) {
// 开始设置参数
pstmt.setString(1, s.split(",")[0]);
pstmt.setString(2, s.split(",")[1]);
pstmt.setString(3, s.split(",")[2]);
pstmt.setString(4, s.split(",")[3]);
// 增加批处理
pstmt.addBatch();
// 计数器加1
i++;
// 当达到批处理提交数量时,执行一次执行批处理
if (i % BATCH_COMMIT_COUNT == 0) {
pstmt.executeBatch();
}
}
// 最后执行一次批处理
pstmt.executeBatch();
// 最终,提交事务
conn.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
// TODO 关闭数据库资源
}
}
public List<String> getData() {
List<String> lst = new ArrayList<String>();
Map m1 = new HashMap();
lst.add("1,1,1,1");
lst.add("2,2,2,2");
lst.add("3,3,3,3");
lst.add("4,4,4,4");
lst.add("5,5,5,5");
lst.add("6,6,6,6");
return lst;
}
public Connection getConnection() throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "esb";
String pwd = "esb";
return java.sql.DriverManager.getConnection(url, user, pwd);
}
}