JDBC插入数据返回数据主键代码实例

yizhihongxing

下面就是“JDBC插入数据返回数据主键”完整攻略,包含以下内容:

  1. 概述
  2. 实现步骤
  3. 示例1:直接使用Statement执行插入操作并返回主键
  4. 示例2:使用PreparedStatement预编译执行插入操作并返回主键

1. 概述

在开发中,我们经常需要在数据库中插入数据,并获取插入后的数据主键值。JDBC 提供了两种方式来执行插入操作并返回主键:直接使用 Statement 执行插入操作并返回主键值,或使用 PreparedStatement 预编译执行插入操作并返回主键值。下面分别详细说明这两种方式的实现步骤及示例。

2. 实现步骤

2.1 直接使用 Statement 执行插入操作并返回主键值

使用 Statement 执行插入操作并返回主键值的步骤如下:

  1. 创建 Connection 对象:通过DriverManager类的getConnection()方法创建数据库连接。
  2. 创建 Statement 对象:通过Connection对象的createStatement()方法创建 Statement 对象。
  3. 调用 Statement.execute() 方法插入数据:使用 SQL 语句执行插入操作,并通过 Statement.execute() 方法执行插入操作,返回 boolean 类型的结果。
  4. 获取插入后的主键值:使用 Statement.getGeneratedKeys() 方法获取插入后的主键值。

下面是示例代码:

import java.sql.*;

public class JDBCTest{
    public static void main(String[] args) throws SQLException{
        Connection conn = null;
        Statement stmt = null;
        try{
            //1. 创建 Connection 对象
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8", "root", "123456");

            //2. 创建 Statement 对象
            stmt = conn.createStatement();

            //3. 执行插入操作
            boolean result = stmt.execute("INSERT INTO user(username, password) VALUES('test', '123456')");

            //4. 获取插入后的主键值
            if(result){
                ResultSet rs = stmt.getGeneratedKeys();
                if(rs.next()){
                    int id = rs.getInt(1);
                    System.out.println("插入成功,主键值为:" + id);
                }
            }
        }catch(SQLException e){
            System.out.println("数据库连接错误");
        }finally{
            //关闭资源
            stmt.close();
            conn.close();
        }
    }
}

2.2 使用 PreparedStatement 预编译执行插入操作并返回主键值

使用 PreparedStatement 预编译执行插入操作并返回主键的步骤如下:

  1. 创建 Connection 对象:通过DriverManager类的getConnection()方法创建数据库连接。
  2. 创建 PreparedStatement 对象:通过Connection对象的prepareStatement()方法创建 PreparedStatement 对象。
  3. 设置参数值:使用 PreparedStatement 类的setXxx()方法设置占位符的参数值。
  4. 调用 PreparedStatement.execute() 方法插入数据:使用 SQL 语句执行插入操作,并通过 PreparedStatement.execute() 方法执行插入操作,返回 boolean 类型的结果。
  5. 获取插入后的主键值:使用 PreparedStatement.getGeneratedKeys() 方法获取插入后的主键值。

下面是示例代码:

import java.sql.*;

public class JDBCTest{
    public static void main(String[] args) throws SQLException{
        Connection conn = null;
        PreparedStatement pstmt = null;
        try{
            //1. 创建 Connection 对象
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8", "root", "123456");

            //2. 创建 PreparedStatement 对象,并设置占位符的参数值
            String sql = "INSERT INTO user(username, password) VALUES(?, ?)";
            pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            pstmt.setString(1, "test");
            pstmt.setString(2, "123456");

            //3. 执行插入操作
            boolean result = pstmt.execute();

            //4. 获取插入后的主键值
            if(result){
                ResultSet rs = pstmt.getGeneratedKeys();
                if(rs.next()){
                    int id = rs.getInt(1);
                    System.out.println("插入成功,主键值为:" + id);
                }
            }
        }catch(SQLException e){
            System.out.println("数据库连接错误");
        }finally{
            //关闭资源
            pstmt.close();
            conn.close();
        }
    }
}

3. 示例1:直接使用Statement执行插入操作并返回主键

下面是示例代码,演示如何直接使用 Statement 执行插入操作并返回主键值:

import java.sql.*;

public class JDBCTest{
    public static void main(String[] args) throws SQLException{
        Connection conn = null;
        Statement stmt = null;
        try{
            //1. 创建 Connection 对象
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8", "root", "123456");

            //2. 创建 Statement 对象
            stmt = conn.createStatement();

            //3. 执行插入操作
            boolean result = stmt.execute("INSERT INTO user(username, password) VALUES('test', '123456')");

            //4. 获取插入后的主键值
            if(result){
                ResultSet rs = stmt.getGeneratedKeys();
                if(rs.next()){
                    int id = rs.getInt(1);
                    System.out.println("插入成功,主键值为:" + id);
                }
            }
        }catch(SQLException e){
            System.out.println("数据库连接错误");
        }finally{
            //关闭资源
            stmt.close();
            conn.close();
        }
    }
}

4. 示例2:使用PreparedStatement预编译执行插入操作并返回主键

下面是示例代码,演示如何使用 PreparedStatement 预编译执行插入操作并返回主键值:

import java.sql.*;

public class JDBCTest{
    public static void main(String[] args) throws SQLException{
        Connection conn = null;
        PreparedStatement pstmt = null;
        try{
            //1. 创建 Connection 对象
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8", "root", "123456");

            //2. 创建 PreparedStatement 对象,并设置占位符的参数值
            String sql = "INSERT INTO user(username, password) VALUES(?, ?)";
            pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            pstmt.setString(1, "test");
            pstmt.setString(2, "123456");

            //3. 执行插入操作
            boolean result = pstmt.execute();

            //4. 获取插入后的主键值
            if(result){
                ResultSet rs = pstmt.getGeneratedKeys();
                if(rs.next()){
                    int id = rs.getInt(1);
                    System.out.println("插入成功,主键值为:" + id);
                }
            }
        }catch(SQLException e){
            System.out.println("数据库连接错误");
        }finally{
            //关闭资源
            pstmt.close();
            conn.close();
        }
    }
}

以上就是“JDBC插入数据返回数据主键”完整攻略,包含了两种方式分别实现插入数据并返回主键的示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JDBC插入数据返回数据主键代码实例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 用Java生成二维码并附带文字信息

    生成二维码并附带文字信息可以通过Java中的ZXing库来实现。下面是具体的步骤: 1. 引入ZXing库 首先需要引入ZXing库,在Maven项目中可以通过添加以下依赖来引入: <dependency> <groupId>com.google.zxing</groupId> <artifactId>core…

    Java 2023年5月20日
    00
  • SpringBoot+Maven 多模块项目的构建、运行、打包实战

    下面我会详细讲解如何使用SpringBoot和Maven构建多模块项目,包括项目的构建、运行和打包,同时会提供两个实例。 环境准备 在开始构建多模块项目之前,请确保已经安装以下软件: JDK 1.8或以上版本 Maven 3.2或以上版本 项目结构 下面是一个简单的多模块项目结构: . ├── parent │ ├── pom.xml │ └── src │…

    Java 2023年5月19日
    00
  • tomcat 集群监控与弹性伸缩详解

    Tomcat 集群监控与弹性伸缩详解 一、实现方式 Tomcat 集群监控与弹性伸缩可以通过组合使用多种开源工具来实现,其中包括: Apache ZooKeeper:用于实现 Tomcat 集群中的节点管理和数据同步。 Tomcat manager:用于实现对 Tomcat 服务器的管理和监控。 Apache jmeter:用于实现对 Tomcat 集群的性…

    Java 2023年6月2日
    00
  • Springboot打成war包并在tomcat中运行的部署方法

    配置pom.xml文件 首先,在pom.xml文件中需要将打包方式修改为war,同时需要将内嵌的Tomcat去除。具体方法如下: <!– 修改打包方式为war –> <packaging>war</packaging> <!– 去除内嵌的tomcat依赖 –> <dependency> &l…

    Java 2023年5月19日
    00
  • 如何优雅的处理异常

    作者:京东零售  秦浩然 一、什么是异常 Java 语言按照错误严重性,从 throwale 根类衍生出 Error 和 Exception 两大派系。 Error(错误): 程序在执行过程中所遇到的硬件或操作系统的错误。错误对程序而言是致命的,将导致程序无法运行。常见的错误有内存溢出,jvm 虚拟机自身的非正常运行,calss 文件没有主方法。程序本生是不…

    Java 2023年4月25日
    00
  • Java中的ArrayList类常用方法和遍历

    关于Java中的ArrayList类常用方法和遍历,以下是一份详细攻略: ArrayList简介 ArrayList是Java中的一种集合框架,用于存储元素列表,也就是一个动态数组。ArrayList允许我们随意添加、删除、访问列表中的元素,并且会在内部自动调整大小,此外,ArrayList类还提供了一些方便的方法用于操作列表中的元素。 常用方法 下面是Ar…

    Java 2023年5月26日
    00
  • 配置Web应用环境实现JSP留言簿

    下面给出配置Web应用环境实现JSP留言簿的完整攻略。 环境准备 在进行Web应用环境配置之前,需要先准备好以下环境: 安装Java开发环境(JDK) 安装Tomcat服务器 安装一个Java IDE(Eclipse、IntelliJ等) 创建Web应用项目 首先,需要在Java IDE中创建一个Web应用项目。以Eclipse为例,创建步骤如下: 打开Ec…

    Java 2023年6月2日
    00
  • Jersey实现Restful服务(实例讲解)

    Jersey 是一个开源、功能强大的框架,用于为 Java 应用程序提供面向资源的 RESTful Web Services。它提供了一种简单的必要 API 和工具,用于快速开发并构建可伸缩、互操作的 RESTful Web Services。 以下是 Jersey 实现 RESTful 服务的完整攻略: 一、准备工作 安装 JDK 和 Eclipse 下载…

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