首页 > 其他分享 >学习笔记——自增长的键值问题、批处理

学习笔记——自增长的键值问题、批处理

时间:2022-11-05 18:01:40浏览次数:60  
标签:rs 批处理 System 笔记 键值 sql println pst out

2022-11-05

 一、自增长的键值问题

1、说明:

  将在数据库表单中添加数据的自增长的字段返回给用户

2、使用方式:

  在预编译语句中,除了要传入sql语句外,还要传入一个参数“Statement.RETURN_GENERATED_KEYS”。其中“Statement”表示的是一个接口,“RETURN_GENERATED_KEYS”表示在执行sql语句的同时,返回自增长的键值对。

  之后,输出自增长键值对使用的方式是“先创建一个预编译对象的自增长结果集(如:rs)使用的语句是“

ResultSet rs = pst.getGeneratedKeys();

”,之后输出语句为自增长结果集对象的getObject(放要获取的列数编号)”。注意,要将输出的语句放置到判断获得的结果集是否有下一个的判断语句中,例如:if(rs.next()){语句放置位置},其中rs表示的是结果集的对象。使用的语句是

ResultSet rs = pst.getGeneratedKeys();
if(rs.next()){
System.out.println("您的员工编号是" + rs.getObject(1));
}
package com.haha.problem;

import org.junit.Test;

import java.sql.*;
import java.util.Date;
import java.util.Scanner;
public class Problem4 {
    @Test
    public void test04() throws SQLException {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入姓名:");
        String ename = input.next();

        System.out.println("请输入薪资:");
        double salary = input.nextDouble();

        System.out.println("请输入出生日期:");
        String birthday = input.next();

        System.out.println("请输入性别:");
        String gender = input.next();

        System.out.println("请输入手机号码:");
        String tel = input.next();


        System.out.println("请输入邮箱:");
        String email = input.next();


        input.close();

        String url = "jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC";
        Connection conn = DriverManager.getConnection(url, "数据库用户名", "数据库密码");

        String sql = "INSERT INTO t_employee(ename,salary,birthday,gender,tel,email,hiredate) VALUES(?,?,?,?,?,?,?)";
        PreparedStatement pst = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

        pst.setObject(1,ename);
        pst.setObject(2,salary);
        pst.setObject(3,birthday);
        pst.setObject(4,gender);
        pst.setObject(5,tel);
        pst.setObject(6,email);
        pst.setObject(7,new Date());

        int len = pst.executeUpdate();
        System.out.println(len>0?"添加成功":"添加失败");
        ResultSet rs = pst.getGeneratedKeys();
        if(rs.next()){
            System.out.println("您的员工编号是" + rs.getObject(1));
        }

        pst.close();
        conn.close();

    }
}

二、批处理

1、说明:

  批处理处理一般用于大批量的输入数据中使用。批处理中不是设置了一条数据就网数据库中添加一条数据,而是将添加的一些数据放置到缓冲区中,添加完后再放置到数据库中。如果缓冲池中满了以后,就会自动将数据放置到数据库中,清空缓冲池。

2、使用实例:

  设置url(此处URL要多加一个参数,添加的参数是

rewriteBatchedStatements=true

,因为MySQL中batch没有自动开启,所以要告诉数据库开启缓冲),设置驱动管理类的连接,设置sql语句,设置连接对象的预编译,设置占位符的取值(将预编译对象先放置到缓冲池中),执行批处理,关闭流对象(连接对象、预编译对象)

3、代码实例:

package com.haha.problem;

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Problem5 {
    @Test
    public void test05() throws SQLException {
        long start = System.currentTimeMillis();
        String url = "jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC&rewriteBatchedStatements=true";
        Connection conn = DriverManager.getConnection(url, "数据库用户名", "数据库密码");

        String sql = "INSERT INTO t_department VALUES(NULL,?,?)";
        PreparedStatement pst = conn.prepareStatement(sql);

        for(int i=1;i<=1000;i++){
            pst.setObject(1,"测试部门名称"+i);
            pst.setObject(2,"测试部门简介"+i);
            pst.addBatch();
        }

        pst.executeBatch();
        pst.close();
        conn.close();
        long end = System.currentTimeMillis();
        System.out.println("耗时:"+(end - start));
    }
}

  

标签:rs,批处理,System,笔记,键值,sql,println,pst,out
From: https://www.cnblogs.com/isDaHua/p/16860558.html

相关文章

  • PyTorch笔记:Modules官方文档
    来自https://pytorch.org/docs/stable/notes/modules.htmlASimpleCustomModuleimporttorchfromtorchimportnnclassMyLinear(nn.Module):def__init__(se......
  • 数字逻辑笔记 全加器全减器8421BCD转余3
    二进制全加器全减器十进制加法8421BCD转余3码......
  • 学习笔记
    JavaScript学习BOM操作BOM是浏览器对象模型(BrowserObjectModel)。它使JavaScript有能力与浏览器进行“对话”。alert():警告弹窗confirm():确定弹窗prompt():提示弹框......
  • shell-函数学习笔记二
    shell函数的定义#方法一functionname{command...command}#方法二name(){command...command}函数的调用直接使用函数名调用,可以将函数......
  • Thinkphp6笔记十九:加载自定义配置
    适用场景:加载自己的某些配置1.创建配置文件app/config/test.php或者app/admin/test.php<?phpreturn['rule'=>['alibaba'=>[],'ebay'=>[],......
  • 学习笔记——元数据、blob类型的元素
    2022-11-04一、元数据1、元数据的说明:元数据就是指描述数据的数据,例如:数据有多少列、数据的列名称等。2、使用的代码:1ResultSetMetaDatametaData=rs.getMeta......
  • 《Unix/Linux系统编程》第十二章学习笔记 20201209戴骏
    第十二章、块设备I/O和缓冲区管理知识点归纳一、块设备I/O缓冲区I/O缓冲的基本原理非常简单。文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk......
  • 学习笔记-Windows 基础服务搭建
    Windows基础服务搭建磁盘管理例1新建两个10G的硬盘,名称为A-10-1、A-10-2,挂载到主机;新建镜像卷,使用所有空间,驱动器号为D.1.开始——管理工具——计算机......
  • 学习笔记-组策略
    组策略组策略的概念组策略(英语:GroupPolicy)是微软WindowsNT家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境。组策略提供了操作系统、应用程序和活......
  • 学习笔记-ACL
    ACL什么是ACLwindows系统中的ACL(AccessControlList),用来表示组与用户权限的列表。比如文件、注册表的权限都包括ACL,它用来表示哪些组与用户具有操作权限,其实主要......