JDBC怎样实现批处理?【案例演示】

这篇具有很好参考价值的文章主要介绍了JDBC怎样实现批处理?【案例演示】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在实际开发中,经常需要向数据库发送多条SQL语句,这时,如果逐条执行这些SQL语句,效率会很低。为此,JDBC提供了批处理机制,即同时执行多条SQL语句。Statement和PreparedStatement都实现了批处理,本节将针对它们的批处理方式进行详细的讲解。

1.Statement批处理

当向数据库发送多条不同的SQL语句时,可以使用Statement实现批处理。Statement通过addBatch()方法添加一条SQL语句,通过executeBatch()方法批量执行SQL语句。为了帮助读者更好地学习如何使用Statement实现批处理,下面通过一个案例来演示。

package cn.itcast.jdbc.example;
import java.sql.Connection;
import java.sgl.Statement;
import cn.itcast.jdbc.example.utils.JDBCUtils;
public class Example10 {
     public static void main (String[] args) {
     connection conn=null:
     statement stmt=null;
     try {
       //加载数据库驱动
       conn= JDBCUtils.getConnection():
       stmt*conn.createStatement();
       //SQL语句
     String sql1="DROP TABLE IF EXISTS school";
     String sq12="CREATE TABLE school (id int,name varchar(20))";
     String sql3="INSERT INTO school VALUES(2,'传智播客')";
     String sql4="UPDATE school SET id=1";
       //Statement 批处理 SQL语句
       stmt.addBatch(aql1);
       stmt.addBatch (sql2):
       stmt.addBatch(sql3);
       stmt.addBatch (sq14);
       stmt.executeBatch();
    } catch (Exception e) {
       e.printStackTrace();
    } finally{                        //释放资源
        JDBCUtils.release (null,stmt,conn);
    }
  }
}

程序运行过程中,Statement会将4条SQL语句提交给数据库一起执行。为了验证例1-13中的SQL语句是否执行成功,进入MySQL,使用SELECT语句查看school表,JhmSQI嘉句的执行结果如下所示。

mysql>select · from school;
+------+--------------+
|  id  |  name        |
+------+--------------+
|   1  |  传智播客    |
+------+--------------+
1 row in set (0.00 sec)

从上述结果可以看出,school表存在,并且向表中添加了一条数据,该数据的id被成功修改成了1。

2. PreparedStatement 批处理

当向同一个数据表中批量更新数据时,如果使用Sratement,需要书写很多SQL语句,这时,为了避免重复代码的书写,可以使用PreparedStatement 实现批处理。与Statement相比,PreparedStatement灵活许多,它既可以使用完整的SQL,也可以使用带参数的不完整SQL。但是,对于不完整的SQL,其具体的内容是采用“?”占位符形式出现的,设置时要按照“?”顺序设置具体的内容。

为了帮助读者更好地学习如何使用PreparedStatement实现批处理,下面通过一个案例来演示。

package cn.itcast.jdbc.example;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement ;
import  cn.itcast.jdbc.example.utils.JDBCUtils;
public class Exanple11 {
    public static void main (String[] args) {
        Connection conn=null;
        PreparedStatement preStmt=null;
        try {
            //加载并注册数据库驱动
             conn=JDBCUtils.getConnection():
            String sql="INSERT INTO users(name,password,email,birthday)"
                   +"VALUES(?,?,?,?)";
            preStmt=conn.prepareStatement(sq1);
            for (int i=0;i<5;i++)(
                preStmt.setString(1, "name"+i);
                preStmt.setString(2,"password"+i);
                preStmt.setString(3,"email"+i+"9itcast.cn");
                preStmt.setDate(4, Date.valueOf("1989-02-19"));
                preStmt.addBatch();
             }
             preStmt.executeBatch():
        } catch (Exception e) {
            e.printStackTrace();

        } finally{                //释放资源
            JDBCUtils.release (null, preStmt, conn);
        }
    }
}

程序运行后,users表中会同时添加5条数据。为了查看数据添加是否成功,进入MySQL,使用SELECT语句查看 users表,结果如下所示。

mysql>select * from users;
+-----+-----------+------------+--------------------+--------------+
|id   |  name     |  password  |  email             |  birthday    |
+-----+-----------+------------+--------------------+--------------+
|  1  |  za       |  123456    | zs@sina.com        |  1980-12-04  |
|  2  |  lisi     |  123456    | lisi@sina.com      |  1981-12-04  |
|  3  |  wangwu   |  123456    | wangwu@sina.com    |  1979-12-04  |
|  5  |  hl       |  123       | hl@sina.com        |  2015-04-18  |
|  6  |  name0    |  password0 | email0@itcast.cn   |  1989-02-19  |
|  7  |  name1    |  password1 | email1@itcast.cn   |  1989-02-19  |
|  8  |  name2    |  password2 | email2@itcast.cn   |  1989-02-19  |
|  9  |  name3    |  password3 | email3@itcast.cn   |  1989-02-19  |
|  10 |  name4    |  password4 | email4@itcast.cn   |  1989-02-19  |
+-----+-----------+------------+--------------------+--------------+
9 rows in set (0.00 sec)

从上述结果可以看出,Examplel1批量添加了5条数据。由此可见,当向同一个表中批量添加或者更新数据的时候,使用PreparedStatement比较方便。

注意:批处理执行SELECT语句会报错。因为Statement和 PreparedStatement的executeBatch()方法的返回值都是int[]类型,所以,能够进行批处理的SQL语句必须是INSERT、UPDATE、DELETE等返回值为int类型的SQL语句。文章来源地址https://www.toymoban.com/news/detail-458324.html

到了这里,关于JDBC怎样实现批处理?【案例演示】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 批处理命令大全 | Windows批处理教程 - ChatGPT

    批处理以.bat或.cmd文件的形式存在,在Windows命令提示符下运行,也可以通过双击批处理文件来运行。批处理文件由一系列命令组成,可以按照顺序执行,也可以根据条件或循环控制选择性地执行。 在Windows上创建一个批处理文件非常简单,在编辑器中输入一系列命令并保存为

    2024年02月04日
    浏览(70)
  • Windows批处理

    @ echo off :关闭命令的回显功能,这样在执行脚本时不会显示每条命令的具体执行过程。建议将此行放在批处理脚本的首行。 rem :用于添加注释,后面可以跟上注释内容。注释的作用是对脚本进行说明或提醒,不会被执行。 pause :暂停批处理的运行,直到用户按下任意键才

    2024年02月07日
    浏览(39)
  • redis批处理优化

    一个命令在网络传输的时间往往是远大于在redis中执行命令的时间的,如果每条命令都要逐条经历网络传输,耗时将会大大增加,我们不妨将命令多量少次的传输给redis,这样就大大减少了因为网络传输时间,大大提高的效率 2.1.单机模式下的批处理 2.2.集群模式下的批处理 这

    2024年01月19日
    浏览(29)
  • 【bat】批处理脚本大全

    目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 4.10.关机 4.11.环境变量 4.12.目录 4.12.1

    2024年02月04日
    浏览(44)
  • BAT 批处理脚本教程

    第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处理命令。 小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。 了解了大概意思后

    2024年02月02日
    浏览(40)
  • 大数据处理平台的架构演进:从批处理到实时流处理

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:大数据系列 ✨文章内容:大数据框架演进 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 大数据处理平台的架构演进经历了从批处理到实

    2024年02月10日
    浏览(33)
  • Spring Batch 批处理框架

    Spring Batch 是一个轻量级、全面的批处理框架,旨在支持开发对企业系统的日常操作至关重要的健壮的批处理应用程序。Spring Batch 建立在人们期望的 Spring Framework 特性(生产力、基于 POJO 的开发方法和一般易用性)的基础上,同时使开发人员可以在必要时轻松访问和使用更高

    2024年02月12日
    浏览(28)
  • Unity静态合批处理详解

    静态批处理的原理 静态合批最重要的一件事就是合并网格。 在运行前 或是 发布前,场景中 相同材质 ,并且标记为 Batching Static (自动静态合批)或者通过代码调用合并函数(StaticBatchingUtility.Combine 手动静态合批)的物体,引擎会把网格信息取出来,之后对网格上的顶点进

    2023年04月22日
    浏览(67)
  • MyBatis批处理,使用foreach

    测试代码: 批量插入数据的局限性: 无法获取插入数据的id 批量生成的SQL太长,可能会被服务器拒绝 测试代码

    2024年02月07日
    浏览(29)
  • .bat批处理打开多个程序

    作为程序员每天开机都需要打开idea、数据库、xshell等开发软件,操作相对繁琐,于是想起了批处理来帮忙一键启动。 在桌面新建一个txt文件,改后缀名为.bat,并加上下面的代码。 代码一(推荐) 代码执行流程 点击bat文件后先执行第一个语句进入到相应的目录。 执行第二个

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包