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
- java多线程向数据库写入数据 -完整版
- java多线程向数据库写入数据
- java多线程向数据库中加载数据
- java向数据库写入汉字
- java向文件写入数据
- 使用abap向数据库直接写入数据
- JAVA向EXCEL写入海量数据
- java数据写入数据库错误
- 用线程池实现多线程向同一个文件写入数据
- 向数据库写入500M的数据的方案
- 无限的向数据库写入数据.这是怎么回事???.
- 使用excel作为数据源,向数据库写入数据
- android 通过php post 向mysql数据库写入数据
- 使用命令窗口(cmd)向数据库中写入数据
- 添加的从web向数据库写入数据的模块
- JavaEE中向数据库写入数据乱码的问题
- mysql+C#实战一:向数据库里面写入数据
- Java多线程完整版基础知识
- Android将bitemap保存在SD卡并读取
- tomcat+nginx+redis实现均衡负载、session共享(二)
- 搭建faster-rcnn进行目标检测的环境
- php rsa 加密、解密、签名、验签
- Struts2学习笔记七(Annotation配置、异步调用ajax(dom4j、Json))
- java多线程向数据库写入数据 -完整版
- 日历
- Boost程序库学习-foreach
- 《Java虚拟机》必知必会的 14 个问题总结(内存模型+GC)
- An App ID with Identifier "xxx" is not available . Please enter a different string.解决方法
- C# 7.0 新功能代码范例
- Android 常用 adb 命令总结
- linux文件属性类型
- Make 文件说明