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

下面就是“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 Runtime的使用详解

    Java Runtime的使用详解 什么是Java Runtime? Java Runtime是一个Java程序执行的环境。当一个Java程序需要运行时,Java Runtime会负责加载Java类和其他的资源,然后执行程序。 Java Runtime由Java Development Kit(JDK)提供, JDK包含JRE(Java Runtime En…

    Java 2023年5月20日
    00
  • Spring MVC框架配置方法详解

    以下是关于“Spring MVC框架配置方法详解”的完整攻略,其中包含两个示例。 Spring MVC框架配置方法详解 Spring MVC是一个基于MVC模式的Web框架,它可以帮助我们快速开发Web应用程序。本文将介绍Spring MVC的框架配置方法,并提供两个示例。 配置DispatcherServlet DispatcherServlet是Spri…

    Java 2023年5月16日
    00
  • maven打包zip包含bin下启动脚本的完整代码

    下面是“maven打包zip包含bin下启动脚本的完整代码”的攻略及示例: 一、创建项目结构 首先,我们需要创建一个maven项目,结构如下: my-project ├── bin │   └── start.sh ├── src │ ├── main │ ├── test │ └── resources ├── pom.xml └── README.md …

    Java 2023年5月19日
    00
  • 详解Java如何实现基于Redis的分布式锁

    下面我就来详细讲解一下Java如何实现基于Redis的分布式锁的完整攻略。 什么是分布式锁 分布式锁是在分布式环境下使用的一种锁机制,用于保证在分布式环境下的多个节点对于同一资源的访问的互斥性,从而保证数据的一致性和完整性。通过分布式锁机制,可以实现多个进程或者多个线程之间的同步。 Redis是分布式锁的常见实现方式 Redis是流行的一个开源内存数据存储系…

    Java 2023年5月27日
    00
  • Java运行时动态生成对象的方法小结

    下面是详细的Java运行时动态生成对象的方法攻略。 1. 简介 在Java中,动态生成对象可以使用Class类的newInstance方法实现。新的创建对象方式是在运行时实现的,因此被称为Java运行时动态生成对象。使用这种方式可以避免在编译时给出类名的麻烦,只需要在运行时确定需要实例化的类名即可。 2. 方法使用 Class类是Java中所有类的超类,它通…

    Java 2023年5月26日
    00
  • Hibernate用ThreadLocal模式(线程局部变量模式)管理Session

    使用ThreadLocal模式管理Hibernate Session可以使得在多线程环境下,每个线程都拥有自己的Session实例,避免了Session实例之间的竞争和混淆,提高了系统的性能和并发性。 下面是详细的攻略: 1. SessionFactory的创建 首先,我们需要创建一个SessionFactory实例,SessionFactory是Hiber…

    Java 2023年5月20日
    00
  • SpringMVC视图作用详解

    以下是关于“SpringMVC视图作用详解”的完整攻略,其中包含两个示例。 1. 前言 SpringMVC是一种常用Java Web开发框架,其核心思想是基于MVC模式来实现Web应用程序开发。而视图是SpringMVC框架的一个重要组成部分,负责将模型数据渲染成HTML页面并返回给客户端。本攻略将详细讲解SpringMVC视图的作用和使用方法。 2. Sp…

    Java 2023年5月16日
    00
  • kafka分布式消息系统基本架构及功能详解

    Kafka分布式消息系统基本架构及功能详解 Kafka简介 Kafka是一个高性能、可扩展、分布式的消息处理平台。它最初是由Linkedin公司开发的,现在已经成为Apache顶级项目之一。Kafka主要用于消息的发布和订阅过程中的分布式处理,可以处理每秒数百万条消息,非常适合使用在大数据处理、实时流处理、日志收集、用户活动跟踪等场景。 Kafka基本架构 …

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