java多线程向数据库写入数据 -完整版

来源:互联网 发布:淘宝儿童足球 编辑:程序博客网 时间:2024/06/07 18:07
public class Member {    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    private String id;    private String classid;    public String getClassid() {        return classid;    }    public void setClassid(String classid) {        this.classid = classid;    }}
public class TestThread01 {    private static int time=0;    private static int residue=0;    public static void division(){         Connection cons=null;         PreparedStatement pss=null;         ResultSet rss = null;        //获取要导入的总的数据条数        String sql3="SELECT  count(*)  FROM class";        try {            Class.forName("com.mysql.jdbc.Driver");            cons = DriverManager.getConnection("jdbc:mysql://192.168.1.85:3306/baseSys", "root", "12");            pss=cons.prepareStatement(sql3);            rss=pss.executeQuery();            int sum=0;            while(rss.next()){                System.out.println("总记录条数:"+rss.getInt(1));                sum=rss.getInt(1);            }            //每30000条记录作为一个分割点            if(sum>=2){                time=sum/2;                residue=sum%2;            }else{                residue=sum;            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (ClassNotFoundException e) {            e.printStackTrace();        }    }    public static void main(String[] args){        TestThread01 test=new TestThread01();        test.division();        int time=0;        if (test.residue==0){              time=test.time;        }        else        {time=test.time+1;}        for(int i=0;i<time;i++){              MyThread myThread=new MyThread(i*2,2);                new Thread(myThread,"新线程"+i).start();        }    }}

public class MyThread implements Runnable{    private int startNum;    private int pageSize;    private Connection cons=null;    private Statement stas=null;    private  Connection con=null;    private Statement sta=null;    private boolean flag=false;    public MyThread() {    }    public MyThread(int startNum,int pageSize) {        this.startNum=startNum;        this.pageSize=pageSize;        System.out.println("处理掉余数");        try {             cons=null;            stas=null;            System.out.println("--------"+Thread.currentThread().getName()+"------------");            Class.forName("com.mysql.jdbc.Driver");            System.out.println("加载mysql驱动...");            cons = DriverManager.getConnection("jdbc:mysql://192.168.1.85:3306/baseSys", "root", "12");            stas = cons.createStatement();            System.out.println("连接mysql数据库成功!!");            System.out.println("加载mysql驱动.....");            Class.forName("com.mysql.jdbc.Driver");            con = DriverManager.getConnection("jdbc:mysql://192.168.1.85:3306/baseSys", "root", "12");            sta = con.createStatement();            // 关闭事务自动提交            con.setAutoCommit(false);            System.out.println("连接mysql数据库成功!!");        } catch (Exception e) {            e.printStackTrace();        }        // TODO Auto-generated constructor stub    }    public ArrayList<Member> getAll(int startNum,int pageSize) throws ClassNotFoundException {        Member member;        ResultSet rss = null;        ArrayList<Member> allmembers=null;        String sql1="select * from class t order by id limit "+startNum+","+pageSize+";";        try {            allmembers=new ArrayList();            System.out.println("正在获取数据...");            rss=stas.executeQuery(sql1);            while(rss.next()){                member=new Member();                member.setId(rss.getString("id"));                member.setClassid(rss.getString("classid"));                allmembers.add(member);                //  System.out.println(member.getNames());            }            System.out.println("成功获取sqlserver数据库数据!");            return allmembers;        } catch (SQLException e) {            // TODO Auto-generated catch block            System.out.println("获取sqlserver数据库数据发送异常!");            e.printStackTrace();        }        try {            rss.close();            stas.close();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }    public void inputAll(ArrayList<Member> allmembers){        System.out.println("开始向mysql中写入");        String sql2="insert into class_bk values (?,?)";        try {            PreparedStatement ps = null;            ps=con.prepareStatement(sql2);            System.out.println("-------------------------等待写入数据条数: "+allmembers.size());            for(int i=0;i<allmembers.size();i++){                ps.setInt(1, Integer.parseInt(allmembers.get(i).getId()));                ps.setInt(2, Integer.parseInt(allmembers.get(i).getClassid()));                ps.executeUpdate();            }            con.commit();            ps.close();            con.close();            this.flag=false;            System.out.println(Thread.currentThread().getName()+"--->OK");        } catch (SQLException e) {            // TODO Auto-generated catch block            System.out.println("向mysql中更新数据时发生异常!");            e.printStackTrace();        }    }    public void run() {        ArrayList<Member> allmembers=null;        try {            allmembers = getAll(startNum,pageSize);            System.out.print(Thread.currentThread().getName()+"  StartNum:"+startNum+"  pageSize:"+pageSize);            inputAll(allmembers);        } catch (ClassNotFoundException e) {            e.printStackTrace();        }    }}

0 0
原创粉丝点击