preparedStatement 处理oracle 如何拿到返回的主键id
时间: 2023-12-14 08:36:34 浏览: 19
在 Oracle 中,可以使用 RETURNING 子句返回插入操作的主键值。
例如,在执行插入操作后,可以使用 RETURNING 子句返回插入行的主键值:
```
INSERT INTO my_table (col1, col2, col3) VALUES (?, ?, ?) RETURNING id INTO ?
```
这里,`my_table` 是要插入数据的表名,`col1`、`col2` 和 `col3` 是要插入的列名,`?` 是占位符,用于在执行预处理语句时设置实际的值。最后一个 `?` 用于接收主键值。
在 Java 中,可以使用 `PreparedStatement` 对象来执行带有 RETURNING 子句的插入操作,并使用 `getGeneratedKeys()` 方法获取返回的主键值:
```
String sql = "INSERT INTO my_table (col1, col2, col3) VALUES (?, ?, ?) RETURNING id INTO ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, value1);
pstmt.setString(2, value2);
pstmt.setString(3, value3);
pstmt.registerOutParameter(4, Types.INTEGER); // 注册输出参数
pstmt.execute();
int id = pstmt.getInt(4); // 获取返回的主键值
```
这里,`conn` 是一个有效的数据库连接对象,`sql` 是预处理语句,`value1`、`value2` 和 `value3` 是实际的值,`4` 是输出参数的位置,`Types.INTEGER` 是输出参数的类型。执行 `pstmt.execute()` 后,可以通过 `pstmt.getInt(4)` 获取返回的主键值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)