jdbc批量操作

来源:互联网 发布:淘宝怎么分辨正品 编辑:程序博客网 时间:2024/06/05 16:24

有时候我们需要执行一连串的插入或者修改或者删除操作(注意select不能批量操作)。如果我们一个一个的执行,就需要多次访问数据库,效率很低,所以我们就可以考虑批量操作。批量操作就是将多个增删改的sql语句添加到preparedStatement中,然后再让preparedStatement调用executeBatch一次性进行所有的操作。下面我以一个插入函数为例,每次插入5000条:

public void saveFacts(List<FJqssb> fList){try {con.setAutoCommit(false);String sql="INSERT INTO F_JQSSB(BJLB_ID,BJFS_ID,SFDTBJ_ID,DATE_ID,"+ "TIME_ID,JQGSDW_ID,FJAJLB_ID,SJAJLB_ID,KDDXX_ID,FJFABW_ID,"+ "SJFACS_ID,SJFAQY_ID,CSCF_ID,JQJB_ID,JJXH,ZHXXRS,JZRS,SJC) VALUES("+ "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";pres=con.prepareStatement(sql);FJqssb ftemp;for(int i=0;i<fList.size();i++){ftemp=fList.get(i);pres.setInt(1, ftemp.getBjlbId());pres.setInt(2, ftemp.getBjfsId());pres.setInt(3, ftemp.getSfdtbjId());pres.setInt(4, ftemp.getDateId());pres.setInt(5, ftemp.getTimeId());pres.setInt(6, ftemp.getJqgsdwId());pres.setInt(7, ftemp.getFjajlbId());pres.setInt(8, ftemp.getSjajlbId());pres.setInt(9, ftemp.getKddxxId());pres.setInt(10, ftemp.getFjfabwId());pres.setInt(11, ftemp.getSjfacsId());pres.setInt(12, ftemp.getSjfaqyId());pres.setInt(13, ftemp.getCscfId());pres.setInt(14, ftemp.getJqjbId());pres.setLong(15, ftemp.getJjxh());pres.setInt(16, ftemp.getZhxxrs());;pres.setInt(17, ftemp.getJzrs());pres.setTimestamp(18, new Timestamp(ftemp.getSjc().getTime()));pres.addBatch();}pres.executeBatch();con.commit();if(pres!=null)                                                 //关闭prespres.close();System.out.println("提交成功!!!");con.setAutoCommit(true);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();  }                    }


0 0
原创粉丝点击