下面就是“JDBC插入数据返回数据主键”完整攻略,包含以下内容:
- 概述
- 实现步骤
- 示例1:直接使用Statement执行插入操作并返回主键
- 示例2:使用PreparedStatement预编译执行插入操作并返回主键
1. 概述
在开发中,我们经常需要在数据库中插入数据,并获取插入后的数据主键值。JDBC 提供了两种方式来执行插入操作并返回主键:直接使用 Statement 执行插入操作并返回主键值,或使用 PreparedStatement 预编译执行插入操作并返回主键值。下面分别详细说明这两种方式的实现步骤及示例。
2. 实现步骤
2.1 直接使用 Statement 执行插入操作并返回主键值
使用 Statement 执行插入操作并返回主键值的步骤如下:
- 创建 Connection 对象:通过DriverManager类的getConnection()方法创建数据库连接。
- 创建 Statement 对象:通过Connection对象的createStatement()方法创建 Statement 对象。
- 调用 Statement.execute() 方法插入数据:使用 SQL 语句执行插入操作,并通过 Statement.execute() 方法执行插入操作,返回 boolean 类型的结果。
- 获取插入后的主键值:使用 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 预编译执行插入操作并返回主键的步骤如下:
- 创建 Connection 对象:通过DriverManager类的getConnection()方法创建数据库连接。
- 创建 PreparedStatement 对象:通过Connection对象的prepareStatement()方法创建 PreparedStatement 对象。
- 设置参数值:使用 PreparedStatement 类的setXxx()方法设置占位符的参数值。
- 调用 PreparedStatement.execute() 方法插入数据:使用 SQL 语句执行插入操作,并通过 PreparedStatement.execute() 方法执行插入操作,返回 boolean 类型的结果。
- 获取插入后的主键值:使用 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技术站