问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql 使用jdbc 执行 statement 批处理问题

发布网友 发布时间:2022-04-08 20:18

我来回答

2个回答

懂视网 时间:2022-04-09 00:39

http://mousepc.iteye.com/blog/1131462

 

•业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。

 

一、
•实现批处理有两种方式,第一种方式:
•Statement.addBatch(sql)
•执行批处理SQL语句
•executeBatch()方法:执行批处理命令
•clearBatch()方法:清除批处理命令

 

  Connection conn = null;
  Statement st = null;
  ResultSet rs = null;
  try {
    conn = JdbcUtil.getConnection();
    String sql1 = "insert into user(name,password,email,birthday)
      values(‘kkk‘,‘123‘,‘abc@sina.com‘,‘1978-08-08‘)";
    String sql2 = "update user set password=‘123456‘ where id=3";
    st = conn.createStatement();
    st.addBatch(sql1); //把SQL语句加入到批命令中
    st.addBatch(sql2); //把SQL语句加入到批命令中
    st.executeBatch();
  } finally{
    JdbcUtil.free(conn, st, rs);
  }

 

•采用Statement.addBatch(sql)方式实现批处理: •优点:可以向数据库发送多条不同的SQL语句。 •缺点:   •SQL语句没有预编译。   •当向数据库发送多条语句相同,但仅参数不同的SQL语句时,需重复写上很多条SQL语句。例如:

  Insert into user(name,password) values(‘aa’,’111’);
  Insert into user(name,password) values(‘bb’,’222’);
  Insert into user(name,password) values(‘cc’,’333’);
  Insert into user(name,password) values(‘dd’,’444’);

 

 

二、 •实现批处理的第二种方式: •PreparedStatement.addBatch()

  conn = JdbcUtil.getConnection();
  String sql = "insert into user(name,password,email,birthday) values(?,?,?,?)";
  st = conn.prepareStatement(sql);
  for(int i=0;i<50000;i++){
    st.setString(1, "aaa" + i);
    st.setString(2, "123" + i);
    st.setString(3, "aaa" + i + "@sina.com");
    st.setDate(4,new Date(1980, 10, 10));
    st.addBatch();
    if(i%1000==0){
      st.executeBatch();
      st.clearBatch();
    }
  }
  st.executeBatch();

•采用PreparedStatement.addBatch()实现批处理 •优点:发送的是预编译后的SQL语句,执行效率高。 •缺点:只能应用在SQL语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。    

[转]使用JDBC进行批处理

标签:

热心网友 时间:2022-04-08 21:47

你是在java 中还是.net中处理呢!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
豆瓣酱放多了怎么补救 鑫创sssbd量产工具 为了了解某校1500名学生的体质状况,随机调查了这个学校内一定数量学生... 564÷85的竖式如何列? 上海房屋过户 要准备什么资料 个人卖房要提供哪些资料 房屋交易资料需要哪些 房子买卖要哪些资料 房产交易需要什么资料 ...让重锤自由下落,打出的一条纸带如图所示,图中 鼠标没有去动他,可是打开页面时总是自己滚动,为什么啊? 我的鼠标滑轮转动但是页面不动,能不能帮帮我 使用鼠标滚动看页面时上下不动怎么办? 电脑鼠标在快速滑动的时候屏幕上的指针却不动怎么回事? 鼠标滚轮今天突然失灵了,网页划不动,求解 一万元利率2.99%怎么计算 在WORD中按鼠标中轮不能自动滚动页面是怎么回事?怎么解决? 浏览器经常浏览到一半的时候页面卡住不动了,就是画面不动,鼠标滚轮无效,画面上无任何可操作的地方 市政道路路床及雨污水施工的先后顺序是什么?有没有相关规范要求_百度... 电脑屏幕不向上翻动怎么了,鼠标滚动屏幕不动怎么回事 市政道路施工流水方向 电脑页面鼠标转动页面没反应? 电动车电池泡在水里3个小时会不会爆炸 origin 如何在坐标轴标题中添加希腊文 下雨天电瓶车电瓶泡在水里要不要紧 为什么会有九九重阳节 电脑小喇叭的声音被我点击禁止了,如图该咋办呀 手表盘上的小表盘刻度是2 4 6 8 10 那位大神能告诉我这是什么意思 华为手表GT2表盘有小绿点什么原因? 重庆seo黄楼博客怎么做才能上首页第一 铁观音的功效与作用? 用了美团的红包充话费了后又下载了红包怎么退回美团? 大便每次有一边发黑是什么回事 一根大便一半黑,请问怎么回事 最近大便一半正常一半黑是怎么回事 美团数字人民币红包余额 大便前半部分黑色 天竺葵叶子黄黄的是怎么了?该怎么解决呢? 急求:今天大便先是黑色的后来一边黑一边黄最后又全黄是怎么回事? 天竺葵的叶子这样了,是出了什么问题 请问文件TS格式转成mp4怎样设置参数? 拉屎一半黄一半偏黑,不知道怎么回事 大便一边绿色一边黑红色 如何让蟹爪兰长得又壮又绿? 蟹爪兰的生长环境和养殖方法 2021年征兵网 怎么养蟹爪兰长得快,5大方法让你的蟹爪兰迅速爆盆 如何用电子邮件发送歌曲、FLASH动画等 怎么用email发歌给人家? 如果邮件要发音乐怎么发