json代码驾照考题批量加入MySQL数据库 ps.executeUpdate()永远只能悲催的加一条数据 去掉id主键自增 用foreach循环数据库只能出现一条语句
2018-01-01 00:37
696 查看
package com.swift; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; import com.google.gson.Gson; public class AddAll { /** * 将D盘D:\java_JDK\java_date路径下的jzkt.json文件中的json驾照考试代码用Gson解析成root对象 */ public static void main(String[] args) { File file = new File("D:\\java_JDK\\java_date", "jzkt.json"); StringBuilder sb = null; List<Result> list = null; try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "utf-8")); String str = null; sb = new StringBuilder(); final String LINE_SEPARATOR = System.getProperty("line.separator"); try { while ((str = br.readLine()) != null) { sb.append(str); sb.append(LINE_SEPARATOR); } Gson gson = new Gson(); Root root = gson.fromJson(sb.toString(), Root.class); list = root.getResult();//得到Result类型的对象列表集合 } catch (IOException e) { e.printStackTrace(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } if (addAll(list)) { System.out.println("添加成功"); } else { System.out.println("添加失败"); } } private static boolean addAll(List<Result> list) { Connection conn = JDBCUtil.getConn(); PreparedStatement ps = null; try { ps = conn.prepareStatement("insert into sw_question values(?,?,?,?,?,?,?,?,?)"); for (int i = 0; i < list.size(); i++) {//不要用foreach的方法,查询可以修改不行,用foreach循环数据库只出现一条语句 System.out.println("i=" + i); ps.setInt(1, list.get(i).getId()); ps.setString(2, list.get(i).getQuestion()); ps.setString(3, list.get(i).getAnswer()); ps.setString(4, list.get(i).getItem1()); ps.setString(5, list.get(i).getItem2()); ps.setString(6, list.get(i).getItem3()); ps.setString(7, list.get(i).getItem4()); ps.setString(8, list.get(i).getExpalins()); ps.setString(9, list.get(i).getUrl()); ps.addBatch();//添加到批处理 ,使用ps.executeUpdate()永远只能悲催的加一条数据 } ps.executeBatch();//执行批处理,如果使用foreach,这句要放到循环当中,但影响程序执行速度 return true; } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtil.closeAll(conn, ps, null); } return false; } }
相关文章推荐
- MyBatis获取数据库自生成的主键Id详解及实例代码
- 很全面的Mysql数据库、数据库表、数据基础操作笔记(含代码)
- JS数组去掉重复数据只保留一条的实现代码
- Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
- 如何写出一条SQL语句:取出表A中第31~40条记录(SQLServer,以自动增长的ID作为主键
- javascript 循环读取JSON数据的代码(获取key value)
- MSSQLSERVER数据库- 一条代码搞定单表备份表结构和表数据
- php 中几种while循环输出数据库中的数据代码
- Mybatis之foreach批量insert,返回主键id列表(修复Mybatis返回null的bug)
- ajax根据ID查询数据库并返回Json格式数据返回js,使用append显示到页面。判断json值为[]或者[[]]的问题。
- 在程序中写了一段代码向数据库中插入数据,出现了data too long for column 'name' at row 1的问题。
- 查询数据的最大排序问题(只能用一条语句写)
- 添加一条新数据并返回此数据的ID(主键)
- MySql数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)
- spring boot 给前台返json数据(list)出现死循环
- myBatis获取批量插入数据的主键id
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- hibernate学习过程问题(1)--通过代码保存数据时,数据库始终只有一条数据
- 一条sql语句(关于将一个表里的数据汇总,更新数据库中的另外一张表的列值
- mongo里面根据对象字段的ID查询 db.Photo.find({'owner.$id':ObjectId('xxxx')}) , 并且使用forEach循环修改查询的数据