使用JDBC在MySQL数据库中如何快速批量插入数据

使用JDBC在MySQL数据库中进行批量插入数据可以大大提高数据插入的效率。以下是详细步骤:

1.导入MySQL JDBC驱动

首先需要在Java项目中导入MySQL JDBC驱动包,这里以MySQL 8为例,可以从以下链接中下载:https://dev.mysql.com/downloads/connector/j/

2.创建JDBC连接

使用JDBC连接MySQL数据库需要以下信息:

  • 数据库URL
  • 数据库用户名
  • 数据库密码
String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
String username = "root";
String password = "password";
Connection conn = DriverManager.getConnection(url, username, password);

3.创建批处理Statement

需要使用prepareStatement方法创建一个PreparedStatement对象,然后使用addBatch方法将要插入的SQL语句添加到批处理中。

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student(name, age) VALUES(?, ?)");
pstmt.setString(1, "张三");
pstmt.setInt(2, 18);
pstmt.addBatch();

pstmt.setString(1, "李四");
pstmt.setInt(2, 20);
pstmt.addBatch();

pstmt.setString(1, "王五");
pstmt.setInt(2, 22);
pstmt.addBatch();

上面的示例中,我们要将3条记录批量插入到student表中,通过setStringsetInt方法设置要插入数据的值,然后通过addBatch方法将SQL语句添加到批处理中。

4.执行批处理操作

调用executeBatch方法执行批处理操作,并将返回结果存储在一个int类型数组中。

int[] result = pstmt.executeBatch();

如果返回结果数组中的某个值为-2,则表示插入数据的主键是自动生成的,我们可以通过getGeneratedKeys方法获取插入数据的主键。

ResultSet rs = pstmt.getGeneratedKeys();
while (rs.next()) {
    int id = rs.getInt(1);
    System.out.println("插入数据的主键为:" + id);
}

5.关闭JDBC连接

使用完JDBC连接对象、PreparedStatement对象、ResultSet对象后,需要及时关闭它们。在Java 7及以上版本中,可以使用try-with-resources语句自动关闭这些资源。

try (ResultSet rs = pstmt.getGeneratedKeys();
     PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student(name, age) VALUES(?, ?)")) {
    // 执行批处理操作
    int[] result = pstmt.executeBatch();

    // 遍历结果集获取插入数据的主键
    while (rs.next()) {
        int id = rs.getInt(1);
        System.out.println("插入数据的主键为:" + id);
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try {
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

示例1:使用JDBC批量插入1000条数据

下面是一个简单示例,使用批处理插入1000条数据。

public static void batchInsert() throws SQLException {
    String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
    String username = "root";
    String password = "password";
    Connection conn = DriverManager.getConnection(url, username, password);

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student(name, age) VALUES(?, ?)");

    for (int i = 0; i < 1000; i++) {
        pstmt.setString(1, "张三" + i);
        pstmt.setInt(2, 18 + i);
        pstmt.addBatch();
    }

    int[] result = pstmt.executeBatch();
    System.out.println("成功插入" + result.length + "条数据");

    pstmt.close();
    conn.close();
}

示例2:从CSV文件中读取数据批量插入到MySQL数据库中

我们可以从CSV文件中读取数据批量插入到MySQL数据库中,以下是示例代码:

public static void batchInsertFromCSVFile(String filePath) throws IOException, SQLException {
    String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
    String username = "root";
    String password = "password";
    Connection conn = DriverManager.getConnection(url, username, password);

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student(name, age) VALUES(?, ?)");

    try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
        String line;
        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");
            pstmt.setString(1, values[0]);
            pstmt.setInt(2, Integer.parseInt(values[1]));
            pstmt.addBatch();
        }
    }

    int[] result = pstmt.executeBatch();
    System.out.println("成功插入" + result.length + "条数据");

    pstmt.close();
    conn.close();
}

在调用该方法时,需要传入一个CSV文件的路径和文件名作为参数,例如:"C:/data.csv"。其中,数据文件中每一行的数据格式为:"姓名,年龄",例如:"张三,18"。

以上就是使用JDBC在MySQL数据库中进行批量插入数据的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用JDBC在MySQL数据库中如何快速批量插入数据 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • Java基础知识杂文

    Java基础知识杂文攻略 简介 Java是一门广泛应用于企业级应用软件开发的编程语言,深受开发者喜爱。本篇文章将为读者讲解Java基础知识杂文的攻略,以帮助读者更好地掌握Java编程。 步骤 步骤一:学习Java基础语法 Java基础语法包括:变量、数据类型、运算符、关键字、控制流等内容。学习Java基础语法是掌握Java编程的第一步。 示例: public…

    Java 2023年5月30日
    00
  • JAVA实现JSON后端向前端传递数据

    下面是详细讲解“JAVA实现JSON后端向前端传递数据”的完整攻略,包括以下内容: 引入JSON库 构造数据对象 将数据对象转化为JSON格式 向前端发送JSON格式数据 其中,步骤2和步骤3可以根据实际需求进行调整。 引入JSON库 Java中,我们可以使用第三方库来实现JSON格式数据的生成和解析,常用的库有GSON和Jackson。这里以GSON为例,…

    Java 2023年5月26日
    00
  • Java中的数组基础知识学习教程

    Java中的数组基础知识学习教程 什么是数组 数组是一种可以存储多个同类型元素的容器。在Java中,数组分为一维数组和多维数组。一维数组可以看作是含有一行元素的表格,多维数组则可以看作是含有多行多列的表格。 如何声明数组 Java中声明数组需要指定数组类型、数组名和数组长度。声明语法如下: 数组类型[] 数组名 = new 数组类型[数组长度]; 比如声明一…

    Java 2023年5月26日
    00
  • Android 服务端将位置信息发送给客户端的实现

    实现Android服务端将位置信息发送给客户端的过程,可以分为以下几个步骤: 步骤一:创建Android客户端并获取用户位置信息 为了从服务端获取位置信息,我们需要在Android客户端中获取用户位置。这可以通过Android系统中的LocationManager和LocationListener类实现。下面是一个简单的实现示例: LocationManag…

    Java 2023年6月15日
    00
  • String.replaceAll方法详析(正则妙用)

    String.replaceAll方法详析(正则妙用) 介绍 在Java程序开发中,字符串的常见操作之一就是字符串替换。String类提供了replaceAll方法,可以基于正则表达式进行替换操作。本文将详细介绍String.replaceAll的用法,以及正则表达式的妙用。 方法定义 String类中用于替换的方法有两个:replace和replaceAl…

    Java 2023年5月27日
    00
  • 一篇文章带你了解Java 中序列化与反序列化

    一篇文章带你了解Java 中序列化与反序列化 引言 在Java编程中,可能需要将对象存储在文件中或通过网络传输。使用序列化来处理这些任务是很常见的方法。本篇文章将介绍Java中的序列化和反序列化的概念和用法,给你提供一个完整的攻略。 Serializable 接口 Java 中的序列化和反序列化要求被序列化的类必须实现 Serializable 接口。实现 …

    Java 2023年5月26日
    00
  • java后端把数据转换为树,map递归生成json树,返回给前端(后台转换)

    首先,需要明确一下这个过程的流程和目的:将后端获得的数据转换为树形结构,再通过递归生成 JSON 树,并返回给前端。下面我们将详细讲解这个过程。 1. 将数据转换为树形结构 首先,需要将后端的数据进行转换,变成树形结构。可以使用递归来完成这个过程。 具体实现方式如下:首先,定义一个树节点的类 Node,包含节点名称、节点编号、父节点编号、节点类型等属性。然后…

    Java 2023年5月26日
    00
  • 深度优先与广度优先Java实现代码示例

    下面我来详细讲解一下“深度优先与广度优先Java实现代码示例”的攻略。 一、深度优先搜索 1. 简介 深度优先搜索(DFS)是一种经典的搜索方法,其基本思想是从一个起始状态开始,尽可能地遍历尽每一个可能到达的状态,直到搜索完所有的状态或者找到了一个目标状态。 2. 实现代码示例 下面是一个简单的深度优先搜索的Java实现代码示例: public void d…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部