Finderror

package com.demo;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class FindErrorRow {

	public static class Student{
		public Student(String name, int age){
			this.age = age;
			this.name = name;
		}
		public int age;
		public String name;
	}
	
	public static void main(String[] args) throws SQLException,
			ClassNotFoundException, IOException {
		String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
		Class.forName(driver);
		Connection conn = DriverManager
				.getConnection("jdbc:sqlserver://192.168.11.84; DatabaseName=dbintranet20160908; user=sa;password=1");
		PreparedStatement state = conn
				.prepareStatement("select id,qianyuetime,birthday,name  from tblStudentStatus");
		ResultSet rs = state.executeQuery();


		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
		sf.setLenient(false); // 设置为false, 表示不会宽松的处理时间字符串,严格检验

		SimpleDateFormat sf1 = new SimpleDateFormat("yyyy");
		
		String name;
		String qianyue;
		String birthday;
		Date qianyueDate;
		Date birtDate;
		int qianyue_int;
		int birtday_int;
		int age_current;
		int id;
		Map<Integer, List<Student>> map = new HashMap<Integer, List<Student>>();
		List<Student> students;
		Student student;
		while (rs.next()) {
			try {
				qianyue = rs.getString("qianyuetime");
				birthday = rs.getString("birthday");
				name = rs.getString("name");
				qianyueDate = sf.parse(qianyue);
				birtDate = sf.parse(birthday);
				
				qianyue_int = Integer.parseInt(sf1.format(qianyueDate));
				birtday_int = Integer.parseInt(sf1.format(birtDate));
				
				age_current = qianyue_int - birtday_int;
				
				if(age_current > 0){
					student = new Student(name, age_current);
					
					if(map.containsKey(qianyue_int)){
						map.get(qianyue_int).add(student);
					}else{
						students = new ArrayList<Student>();
						students.add(student);
						map.put(qianyue_int, students);
					}
				}
			} catch (ParseException  e) {
				continue;
			} catch ( NullPointerException e){
				continue;
			} catch(NumberFormatException e){
				continue;
			}
		}
		
		
		String sql = "insert into Temp_StudentAge(name, age, qianyue) values(?,?,?)";
		
		int qianyue_year;
		for(Entry<Integer, List<Student>> entry : map.entrySet()){
			qianyue_year = entry.getKey();
			for(Student stu : entry.getValue()){
				state = conn.prepareStatement(sql);
				state.setString(1, stu.name);
				state.setInt(2, stu.age);
				state.setInt(3, qianyue_year);
				state.execute();
			}
		}
		
		conn.close();
		state.close();
		rs.close();
		System.out.print("end");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值