티스토리 뷰
java 반복문 내 prepareStatement 사용시 유의사항.
■ 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | for(int i=0 ; i<arr.size() ; i++) { sql = new StringBuffer(); sql.append("insert into tbltot_order_detail \n"); sql.append(" (a,b,c) \n"); sql.append("values (?, ?, ?) "); psmt = conn2.prepareStatement(sql.toString()); pstmt.setString(1, "A"); //order_no pstmt.setString(2, "B"); //order_seq pstmt.setString(3, "C"); //lot_id pstmt.executeUpdate(); conn2.commit(); } | cs |
■ 수정 1
- pstmt 초기화 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | for(int i=0 ; i<arr.size() ; i++) { sql = new StringBuffer(); sql.append("insert into tbltot_order_detail \n") sql.append(" (a,b,c) \n") sql.append("values (?, ?, ?) "); psmt = conn2.prepareStatement(sql.toString()); pstmt.setString(1, "A"); //order_no pstmt.setString(2, "B"); //order_seq pstmt.setString(3, "C"); //lot_id pstmt.executeUpdate(); conn2.commit(); try { if (psmt != null) psmt.close(); } catch(Exception e){ psmt=null; } } | cs |
■ 수정 2
- pstmt 생성 부분을 for문 밖으로 꺼냄
- addBatch() 사용
- executeBatch() 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | dm = new makeElecInfoDM(); sql = new StringBuffer(); sql.append("insert into tbltot_order_detail \n") sql.append(" (a,b,c) \n") sql.append("values (?, ?, ?) "); psmt = conn2.prepareStatement(sql.toString()); for(int i=0 ; i<arr.size() ; i++) { dm = (makeElecInfoDM)arr.get(i); pstmt.setString(1, dm.getOrderNo()); //order_no pstmt.setString(2, dm.getOrderSeq()); //order_seq pstmt.setString(3, dm.getLotId()); //lot_id psmt.addBatch(); } psmt.executeBatch(); conn2.commit(); | cs |
이런식으로 사용하면 된다.
끗~!
'개발 > 언어' 카테고리의 다른 글
[마이바티스] if문 (0) | 2017.04.26 |
---|
댓글