JDBC的批处理操作

在jdbc中,批处理操作允许将多条sql语句一起执行,从而提高数据库操作的效率。以下是关于批处理的详细说明和示例代码:

1.1.1 什么是批处理

在之前的JDBC操作中,我们通常是一条SQL语句执行一次。现在,通过批处理,我们可以将多条SQL语句组合在一起,一次性执行。

1.1.2 批处理的基本使用

以下是批处理的基本使用示例:

package com.xdr630.jdbc.demo6;

import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Statement;import org.junit.Test;import com.xdr630.jdbc.utils.JDBCUtils;

/**

  • 批处理操作示例

  • @author xdr*/public class JDBCDemo6 {

    @Test/**

    • 批处理基本操作*/public void demo1() {Connection conn = null;Statement stmt = null;try {// 获得连接conn = JDBCUtils.getConnection();// 创建执行批处理对象stmt = conn.createStatement();// 编写一批SQL语句String sql1 = "create database test1";String sql2 = "use test1";String sql3 = "create table user(id int primary key auto_increment, name varchar(20))";String sql4 = "insert into user values (null, 'aaa')";String sql5 = "insert into user values (null, 'bbb')";String sql6 = "insert into user values (null, 'ccc')";String sql7 = "update user set name = 'mmm' where id = 2";String sql8 = "delete from user where id = 1";// 添加到批处理stmt.addBatch(sql1);stmt.addBatch(sql2);stmt.addBatch(sql3);stmt.addBatch(sql4);stmt.addBatch(sql5);stmt.addBatch(sql6);stmt.addBatch(sql7);stmt.addBatch(sql8);// 执行批处理stmt.executeBatch();} catch (Exception e) {e.printStackTrace();} finally {JDBCUtils.release(stmt, conn);}}}

执行后的结果:

JDBC的批处理操作

微软爱写作 微软爱写作

微软出品的免费英文写作/辅助/批改/评分工具

微软爱写作 17 查看详情 微软爱写作

1.1.3 批量插入(使用PreparedStatement)

以下是使用PreparedStatement进行批量插入的示例:

@Test/**
  • 批量插入记录

  • 默认情况下MySQL批处理没有开启的,需要在url后面拼接一个参数即可。*/public void demo2() {// 记录开始时间long begin = System.currentTimeMillis();Connection conn = null;PreparedStatement pstmt = null;try {// 获得连接conn = JDBCUtils.getConnection();// 编写SQL语句String sql = "insert into user values (null, ?)";// 预编译SQLpstmt = conn.prepareStatement(sql);for (int i = 1; i <= 10000; i++) {pstmt.setString(1, "name" + i);pstmt.addBatch();if (i % 1000 == 0) {pstmt.executeBatch();pstmt.clearBatch();}}// 执行剩余的批处理pstmt.executeBatch();} catch (Exception e) {e.printStackTrace();} finally {JDBCUtils.release(pstmt, conn);}// 记录结束时间long end = System.currentTimeMillis();System.out.println("批量插入10000条记录耗时:" + (end - begin) + "毫秒");}

  • 为了启用MySQL的批处理,需要修改db.properties配置文件:

    driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql:///test1?rewriteBatchedStatements=trueusername=rootpassword=1234

    执行完成后就会插入一万条记录:

    JDBC的批处理操作

    以上就是JDBC的批处理操作的详细内容,更多请关注创想鸟其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
    发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/608144.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2025年11月10日 23:43:31
    下一篇 2025年11月10日 23:44:39

    相关推荐

    • python爬虫怎么自动停止

      自动停止 Python 爬虫可通过以下方法实现:设置计时器:使用 time 模块的 sleep() 函数休眠爬虫,然后使用 sys.exit() 停止。使用信号处理:注册一个信号处理函数,当收到特定信号时停止爬虫。监听键盘输入:使用 msvcrt 模块(仅适用于 Windows)或 getch() …

      2025年12月13日
      000
    • python爬虫怎么mysql

      使用 Python 爬虫将数据保存到 MySQL方法:安装 pymysql 库。连接到 MySQL 数据库。创建游标。准备 SQL 插入语句。绑定数据并执行 SQL 语句。提交更改。关闭连接。 如何使用 Python 爬虫将数据保存到 MySQL? 方法: 1. 安装必要的库 安装 pymysql …

      2025年12月13日
      000
    • 使用 YOLO 构建实时目标检测应用程序

      物体检测已成为人工智能最令人兴奋的应用之一,使机器能够理解和解释视觉数据。在本教程中,我们将逐步介绍使用 yolo(只看一次)算法创建实时对象检测应用程序的步骤。这个强大的模型可以快速准确地检测图像和视频中的对象,使其适用于从监控到自动驾驶车辆的各种应用。 目录 什么是物体检测?了解 yolo设置您…

      2025年12月13日
      000
    • CollabSphere 部分设置模块化 Django 聊天应用程序

      嘿开发者!欢迎来到第一个 collabsphere 系列。在这篇文章中,我们将使用模块化架构设置 collabsphere,将我们的应用程序分为不同的组件:用户、房间和聊天。 让我们开始吧! 项目结构和初始设置 设置虚拟环境 # create a folder named `collabsphere…

      2025年12月13日
      000
    • “DLL Load Failed due to Absence of Wheel for sqlcipheruot; 错误的解决方案

      概述 如果您曾经参与过需要 sqlcipher3 库的 python 项目,您可能遇到过如下错误消息: importerror: dll load failed while importing _sqlite3: the specified module could not be found. 此错…

      2025年12月13日
      000
    • MongoDB适合企业级业务报表场景吗?

      MongoDB 是否适合企业业务报表场景? 在考虑使用 Python 和 MongoDB 构建原型系统时,开发者往往会面临 MySQL 和 MongoDB 的选择。MongoDB 的灵活性使其成为迭代快速的场景的理想选择,但人们普遍担心它在复杂业务报表中的表现。 MongoDB 的限制:Join 查…

      2025年12月13日
      000
    • MongoDB适合做业务报表吗?

      MongoDB 用于业务报表的可行性 在构建原型系统时,MongoDB 和 MySQL 都是流行的选择。MongoDB 以其可扩展性和对非结构化数据的支持而闻名,而 MySQL 以其可靠性、用于跨表查询的强大 JOIN 操作以及对复杂业务报表的支持而著称。 MongoDB 的限制 对于需要复杂 JO…

      2025年12月13日
      000
    • MongoDB 能否胜任复杂的企业业务报表制作?

      使用 MongoDB 制作业务报表的可行性 对于使用 Python + MongoDB 进行快速迭代的原型系统,MongoDB 的灵活性确实很具有吸引力。但当涉及到复杂的数据查询,如企业业务报表时,一些开发者可能会疑问 MongoDB 是否能胜任。 挑战 MongoDB 的文档导向模式意味着它不支持…

      2025年12月13日
      000
    • MongoDB能否满足企业业务报告的复杂查询需求?

      MongoDB:企业业务报告的可行性 问题: 使用 MongoDB 加上 Python 构建原型系统时,是否可以满足企业业务报告需求? 回答: 当涉及复杂的 join 查询时,MongoDB 可能确实面临一些挑战。它不支持集合之间的 join 操作,也没有子查询,这对于处理复杂的 join 查询而言…

      2025年12月13日
      000
    • MongoDB适合做企业级复杂业务报表吗?

      MongoDB 做业务报表可行性分析 问题:mongodb 是否适用于处理复杂的企业业务报表,需要进行跨集合多表关联查询? 回答: 在需要进行复杂企业业务报表时,MongoDB 可能面临一定的挑战。由于不支持跨集合关联和子查询,在处理涉及多表关联的复杂查询时可能存在局限性。 MongoDB 的优缺点…

      2025年12月13日
      000
    • 如何以正确的方式启动你的 Django 项目

      如何以正确的方式启动 django 项目 django 是一个强大且多功能的 python 框架,旨在简化 web 开发。但是,启动 django 项目的方式可能会显着影响其可扩展性、可维护性和性能。本指南提供了全面的分步演练,帮助您以正确的方式启动 django 项目,确保为成功奠定坚实的基础。 …

      2025年12月13日
      000
    • 使用 Gemini Flash 构建视频洞察生成器

      视频理解或视频洞察由于其多方面的优势而在各个行业和应用中至关重要。它们通过自动生成元数据、对内容进行分类并使视频更易于搜索来增强内容分析和管理。此外,视频洞察提供了推动决策、增强用户体验并提高不同行业运营效率的关键数据。 google 的 gemini 1.5 模型为该领域带来了重大进步。除了在语言…

      2025年12月13日
      000
    • 批量插入SQL时出现“not enough arguments for format string”错误怎么办?

      在执行批量插入SQL时遇到“not enough arguments for format string”错误,可能是因为传递给SQL语句的参数数量不匹配。 根据你的代码,你使用fetchall()获得了数据,但其返回的row不是tuple类型,导致与SQL语句中的占位符数量不一致。因此,使用lis…

      2025年12月13日
      000
    • Windows下Python3安装pip后pip命令报错怎么办?

      解决 Windows Python3 安装 pip 后执行 pip 命令报错的问题 在 Windows 系统中安装了 Python3 并顺利安装了 pip 后,运行 pip 命令仍然报错,该问题可能是由于环境配置问题造成的。 解决方案: 检查用户环境变量 PATH 中是否包含 Python 安装目录…

      2025年12月13日
      000
    • SQL批量新增报错“not enough arguments for format string”:如何避免参数数量不足?

      SQL批量新增问题 在执行批量新增SQL操作时遇到“not enough arguments for format string”错误,原因在于传递给SQL语句的参数数量不足。 使用list1 使用list1的原因是,SQL语句使用了占位符,需要一个与占位符数量相匹配的元组列表。而list1是一个嵌…

      2025年12月13日
      000
    • 批量插入SQL数据时,占位符数量与参数数量不匹配如何解决?

      在批量执行 sql 插入语句时,参数数量必须与占位符数量相匹配才能正常执行。 问题中的情况: 使用 fetchall() 获取的数据 list1 是由元组组成的列表。但是,当使用 insert_all() 尝试批量插入这些数据时,错误说明 “not enough arguments for form…

      2025年12月13日
      000
    • Kohya 对 FLUX LoRA (B GPU) 和 DreamBooth / Fine-Tuning (B GPU) 训练带来了巨大改进

      您可以下载所有配置和完整说明 https://www.patreon.com/posts/112099700 – 微调帖子https://www.patreon.com/posts/110879657 – LoRA 帖子 Kohya 对 FLUX LoRA 和 DreamBo…

      2025年12月13日
      000
    • API返回空值且requests库无报错,如何排查故障?

      无法获取 api 返回数据的排除故障 根据提供的代码,我们尝试分析导致无法获得 api 返回数据的可能原因。 问题复现 原代码尝试通过 post 请求获取 ip 查询 api 的返回数据,但遇到以下问题: api 返回空值。requests 库没有报错。 原因分析 经过仔细检查,我们发现原始代码中存…

      2025年12月13日
      000
    • API返回空值,可能有哪些原因及如何解决?

      api 返回空值的原因分析 在使用提供的代码获取 api 返回数据时遇到空值问题,以下是导致此问题的可能原因: 1. url 字段不完整 在 api url 中,缺少了必要的 fields 字段。正确的 url 格式应为: http://ip-api.com/batch?fields=58898&a…

      2025年12月13日
      000
    • 如何在Windows系统中打包需要特定Python版本(3.11.6)的脚本?

      用特定版本运行脚本并打包进文件夹 在需要特定版本(3.11.6)运行脚本但又使用 3.12 版作为主力的情况下,如何将脚本打包到文件夹中并正常执行? 解决方法: 对于 linux 系统,使用 docker 是理想的选择。但对于 windows 系统,推荐使用以下步骤: 立即学习“Python免费学习…

      2025年12月13日
      000

    发表回复

    登录后才能评论
    关注微信