JDBC大批量写入数据到SQLServer2000,记录数大于10000

		SpObserver.putSp("sessionFactory1"); 
		SimpleDateFormat fomat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Session s=null;
		s=daoSupport.getSessionFactory().openSession();
		Connection con=s.connection();
		Statement stmt = null;
		try {
			stmt=con.createStatement();
			con.setAutoCommit(false);
			Iterator it=list.iterator();
			int iCount = 1;
			long start = System.currentTimeMillis();
			while(it.hasNext()){
				TResultWaterZId t = (TResultWaterZId)it.next();
				StringBuffer sb = new StringBuffer();
				sb.append("insert into T_result_water_z(schemeid,stcd,z,tm) values('");
				sb.append(t.getSchemeid()).append("','").append(t.getStcd()).append("','");
				sb.append(t.getZ()).append("','").append(fomat.format(t.getTm())).append("')");
				stmt.addBatch(sb.toString());
				if(iCount % 1000 == 0){
					stmt.executeBatch();
					stmt.clearBatch();
				}
				iCount++;
			}
			stmt.executeBatch();
			stmt.clearBatch();
			con.commit();
			long end = System.currentTimeMillis();
			System.out.println("addTResultWaterZId used time:"+(end-start));
			stmt.close();
			con.close();
		} catch (SQLException e) {
			try {
				con.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
		}finally{
			try {
				stmt.close();
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
posted @ 2009-12-07 13:43  笑天.net  阅读(494)  评论(0编辑  收藏  举报