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;
}
}

json代码驾照考题批量加入MySQL数据库 ps.executeUpdate()永远只能悲催的加一条数据 去掉id主键自增 用foreach循环数据库只能出现一条语句的更多相关文章

  1. 主键非自增列 EF 插入数据库引起的 ID 列不能为 NULL 的错误

    protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<PostBo ...

  2. erlang mnesia数据库设置主键自增

    Mnesia是erlang/otp自带的分布式数据库管理系统.mnesia配合erlang的实现近乎理想,但在实际使用当中差强人意,总会有一些不足.mnesia数据表没有主键自增的功能,但在mnesi ...

  3. mysql数据库单表只有一个主键自增id字段,ibatis实现id自增

    mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid">        insert into user_id ...

  4. mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

    [CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问 ...

  5. 通过DbVisualizer 工具运行DB2存储过程实现INSERT语句主键自增造数

    1.需求简介 最近开发人员需要进行一批数据进行生产上SQL语句耗时过长问题的验证与优化.所以在性能测试库中批量建造数据,由于交易本身业务逻辑过于复杂以及需要各种授权,最后决定采用插表的方式完成. 2. ...

  6. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'portal.hibernate_sequence' doesn't exist, 谈谈主键自增的方式

    最近几天几天做项目用到了Spring Data JPA,确实是个好东西,省了很多力气.但是由于刚开始用,也遇到不少头疼的问题,如下,调用JpaRepository接口的save方法保存一个对象到数据库 ...

  7. MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)

    测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿 ...

  8. 如何知道刚刚插入数据库那条数据的id

    如何知道刚刚插入数据库那条数据的id 一.总结 一句话总结:这些常见功能各个框架里面都有,可以查看手册,thinkphp里面是$userId = Db::name('user')->getLas ...

  9. 关于如何在mysql中插入一条数据后,返回这条数据的id

    简单的总结一下如何在mysql中出入一条数据后,返回该条数据的id ,假如之后代码需要这个id,这样做起来就变得非常方便,内容如下: <insert id="insertAndGetI ...

随机推荐

  1. Linux服务之 Nginx安装

    安装包下载: 链接:https://pan.baidu.com/s/1yna9nvT_9iYw4_0uVQRgFw 提取码:nurm yum -y install gcc automake autoc ...

  2. Travelling (三进制+状压dp)

    题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; inline ll read(){ ,f= ...

  3. Ext3.1的一些使用讨论

    这里简单记录一下曾经的10个月使用Ext的工作模式. 前公司用的是 Ext 3.1,在2018/2019的今天,可以说是比较久远的技术了.处于大前端发展时代的我们,对其的诟病应该不少. 不过其中面向对 ...

  4. java——模拟新浪微博用户注册

    1.创建用户类,重写HashCode()和equals()方法: import java.util.*; public class User{ private String name; private ...

  5. POJ 3321 Apple Tree DFS序 + 树状数组

    多次修改一棵树节点的值,或者询问当前这个节点的子树所有节点权值总和. 首先预处理出DFS序L[i]和R[i] 把问题转化为区间查询总和问题.单点修改,区间查询,树状数组即可. 注意修改的时候也要按照d ...

  6. (转)vmware克隆Centos6.4虚拟机网卡无法启动问题

    vmware克隆Centos6.4虚拟机网卡无法启动问题 原文:http://blog.51cto.com/oldboy/1363853 快速处理办法: cat /etc/sysconfig/netw ...

  7. SpringBoot | 第十七章:web应用开发之文件上传

    前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继续吧.通常,我们在做we ...

  8. ECShop配置文件解析

    1. 配置文件位置:/upload/data/config.php 2. 配置解析 <?php // 主机地址 $db_host = ""; // 数据库名称 $db_nam ...

  9. 常用模块random,time,os,sys,序列化模块

    一丶random模块 取随机数的模块 #导入random模块 import random #取随机小数: r = random.random() #取大于零且小于一之间的小数 print(r) #0. ...

  10. javascript动态修改对象的属性名

    在做东钿业务系统的时候,经常碰到写很多重复的ajax对接,于是就想封装一个方法,但是接收data的字段名不一样,所以就需要用到动态对象属性名这个写法了.其实很简单.直接看一下代码吧.