json代码驾照考题批量加入MySQL数据库 ps.executeUpdate()永远只能悲催的加一条数据 去掉id主键自增 for 与 foreach

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的方法,查询可以修改不行
                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();//执行批处理
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeAll(conn, ps, null);
        }
        return false;
    }
}
时间: 2024-10-13 16:18:49

json代码驾照考题批量加入MySQL数据库 ps.executeUpdate()永远只能悲催的加一条数据 去掉id主键自增 for 与 foreach的相关文章

MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Text; p

批量修改mysql数据库表前缀。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)

PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更新数据库中的老网址,如果一个一个修改,很不方便,所以开发此源码,供大家学习或使用: //2.源码开发者:杨波: //3.源码开发者联系QQ:773003231: //4.源码开发者博客:http://www.cnblogs.com/phpyangbo/: //5.源码开放性:任何人都可以随意更改或使用本源

JDBC远程从一个MySql数据库中的一张表里面读出数据(这个数据库需要用SSH隧道连接,大约8W条数据),然后分别插入到另一个数据库中的两张表里

package com.eeepay.lzj.db; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.jcraft.jsch.JSch; import com.jcraft.jsc

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

mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid">        insert into user_id values(null)        <selectKey resultClass="int">SELECT @@IDENTITY As id</selectKey>    </insert>

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

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i

数据库插入数据返回当前主键ID值方法

环境:SQL Anywhere 9.0.2 创建语句: create table test(    id int primary key identity(1,1),    name varchar(20)) 当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. 使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select

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

测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿实际的案例来说服他,所以准备做一个详细的测试.   作为互联网公司,一定有用户表,而且用户表UC_USER基本会有百万记录,所以在这个表基础上准测试数据来进行测试.            测试过程是目前我想到的多方位的常用的几种类型的sql进行测试,当然可能不太完善,欢迎大家留言提出更加完善的测试方

数据库如何查询第二条数据且ID不同

关于数据库如何查询第二条数据且ID不同 在sever 2008数据库中,查询语句为 select * from 表名  或则   select 列名 from 表名 这是查询一个表中所有的数据,那么查询第二语句呢? 开始用“top 2”是可以查询前两条数据的,再根据指定的列名排序,这样想可以 “select top 2 * from 表名 order by 列名 desc”(desc倒序 acs正序), 但是查询出来的为最后两条的数据,可见是先倒序然后查询的头两条.那么倒序是行不通. 正序又有两