如何在 Jdbc 中检索自动生成的键值

本文展示了如何在Java中利用JDBC与MySQL数据库交互,特别是在插入记录时如何获取 AUTO_INCREMENT 自动生成的主键ID。通过添加MySQL依赖,创建`Students`表,然后在Java代码中插入数据并使用`Statement.RETURN_GENERATED_KEYS`来检索生成的键。
摘要由CSDN通过智能技术生成

在这篇文章中,我们将学习如何使用JDBC来检索自动生成的密钥。我们使用MySQL数据库,它具有AUTO_INCREMENT属性为新行生成唯一的ID。

在  Java 数据库连接教程中签出完整的 JDBC 教程。

1. Maven MySQL依赖关系

将以下 MySQL 依赖项添加到您的 maven 项目中:
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.15</version>
</dependency>

2. 数据库设置

让我们创建一个数据库并将其命名为“demo”:
mysql> create database demo;
使用以下语句在上述创建的数据库中创建 Students 表:
CREATE TABLE Students
(
 Id BIGINT PRIMARY KEY AUTO_INCREMENT, 
 Name VARCHAR(100)
);
MySQL的AUTO_INCREMENT属性为新行生成唯一的ID。以下示例显示了如何使用 JDBC 检索自动生成的键值。

3. MySQL Java 自动生成密钥示例

在示例中,我们将一个新的学生记录添加到一个表中,该表的主键由 MySQL 自动递增。我们检索生成的 ID。
package net.javaguides.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class JdbcAutoGenKey {

    public static void main(String[] args) {

        String url = "jdbc:mysql://localhost:3306/demo?useSSL=false";
        String user = "root";
        String password = "root";

        String studentName = "Ramesh Fadatare";
        String sql = "INSERT INTO Students(Name) VALUES(?)";

        try (Connection con = DriverManager.getConnection(url, user, password); PreparedStatement preparedStatement = con.prepareStatement(sql,
            Statement.RETURN_GENERATED_KEYS)) {

            preparedStatement.setString(1, studentName);
            preparedStatement.executeUpdate();

            try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) {

                if (resultSet.first()) {

                    System.out.printf("The ID of new student : %d", resultSet.getLong(1));
                }
            }

        } catch (SQLException ex) {

            Logger lgr = Logger.getLogger(JdbcAutoGenKey.class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);
        }
    }
}
输出:
The ID of new student : 1
作为第一步,我们必须将Statement.RETURN_GENERATED_KEYS传递给 prepareStatement() 方法:
try (Connection con = DriverManager.getConnection(url, user, password);
        PreparedStatement pst = con.prepareStatement(sql,
                Statement.RETURN_GENERATED_KEYS)) {
然后,我们使用 getGeneratedKeys() 方法检索生成的密钥:
try (ResultSet rs = pst.getGeneratedKeys()) {
由于我们只有一个 insert 语句,因此我们使用 first() 导航到该值:
if (rs.first()) {
    
    System.out.printf("The ID of new author: %d", rs.getLong(1));
}

在 Java 数据库连接教程中签出完整的 JDBC 教程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值