Logo

郎哥编程

批处理操作

2020-01-16 217

PreparedStatement接口的addBatch()方法,可以将SQL更新语句的一组参数添加到SQL命令中,对SQL更新语句涉及的表中记录进行批量更新。数据库记录的批处理更新需要addBatch()方法和executeBatch()方法共同完成。

案例1:使用SQL语句批处理操作在shoper表中插入多个店铺。

在demo包下新建SqlDemoTest11类。代码如下:

package demo;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
 
 
/**
 * @ClassName: SqlDemoTest11
 * @Description: 数据库编程(SQL语句批处理操作)案例1
 * @author 编程训练营
 * @date
 *
 */
 
public class SqlDemoTest11 {
 
    // 定义JDBC加载路径
    static String jdbc = "com.mysql.cj.jdbc.Driver";
    // 定义MySQL数据库的连接地址
    static String mysqlurl = "jdbc:mysql://localhost:3306/shop?serverTimezone=GMT%2B8";
    // 定义MySQL数据库的用户名
    static String username = "root";
    // 定义MySQL数据库的用户名登录密码
    static String password = "~123456q";
 
    /**
     * @Title: main
     * @Description: Java程序入口main方法
     * @param @param args 参数
     *
     * @return void 返回类型 @throws
     */
 
    public static void main(String[] args) {
      
       Connection conn = null;
       PreparedStatement prepareStatement = null;
       try {
           // 加载JDBC驱动
           Class.forName(jdbc);
           // 连接数据库
           conn = DriverManager.getConnection(mysqlurl, username, password);
           if (null != conn) {
              System.out.println(conn);
              String name = "打印机专卖店";
              String brief = "打印机专业销售";
              // 向shoper表中插入条记录
              String sql = "insert into shoper(id,userId,name,brief,log,shopMoney,status,createDate)"
                         + "values(?,?,?,?,?,?,?,?)";
              // 实例化Statement对象
              prepareStatement = conn.prepareStatement(sql);
              // 批处理设置SQL语句更新参数
              for( int i = 0; i < 10; i++ )
              {
                  // 设置id字段的值
                  prepareStatement.setString(1,"0000" + i);
                  // 设置userId字段的值
                  prepareStatement.setString(2,"uoo" + i);
                  // 设置name字段的值
                  prepareStatement.setString(3,"店铺-" + i);
                  // 设置brief字段的值
                  prepareStatement.setString(4,"店铺结束-" + i);
                  // 设置log字段的值
                  prepareStatement.setString(5,"log" + i);
                  // 设置shopMoney字段的值
                  prepareStatement.setDouble(6,0.0);
                  // 设置status字段的值
                  prepareStatement.setInt(7, 0);
                  // 设置日期字段
                  java.util.Date date = new java.util.Date();
                  java.sql.Date sqldate = new java.sql.Date(date.getTime());
                  prepareStatement.setDate(8,sqldate);
                  prepareStatement.addBatch();
              }
              // 执行批处理
              int row[]  = prepareStatement.executeBatch();
              System.out.println("更新了" + row.length + "条记录");
              prepareStatement.close();
              conn.close();
           } else {
              System.out.println("数据库连接失败");
           }
       } catch (ClassNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (SQLException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
 
    }
 
}

SqlDemoTest11程序在shoper表中插入10条记录。程序使用for循环,将10条记录的SQL插入命令,通过addBatch()方法添加到PreparedStatement对象的批处理命令中。最后通过executeBatch()方法执行批处理命令。

批处理执行完成后,数据库shoper表被插入了10条记录。如下图所示:

image.png

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论