java - 无法在 JDBC 中插入主键
问题描述
我在我的项目中使用 Microsoft SQL Server,并且使用 JDBC 作为连接器。我的项目在 Tomcat 服务器中运行。我要做的是获取新插入值的主键,而无需再编写一个选择语句。
这是我的java代码:
PreparedStatement ps = conn.prepareStatement("INSERT INTO Users(FIRSTNAME,STATUS)VALUES " +
"(?,?)", Statement.RETURN_GENERATED_KEYS);
ps.setString(1, "name");
ps.setInt(2, status);
int updatedRows = ps.executeUpdate();
if(updatedRows > 0){
ResultSet resultSet = ps.getGeneratedKeys();
if (resultSet.next()) {
// do some stuff with resultSet.getInt(1)
// but code does not enter here
}
}
但是代码没有像我在评论中提到的那样进入内部 if 子句语句。我也试过这个:
PreparedStatement ps = conn.prepareStatement("INSERT INTO Users(FIRSTNAME,STATUS)VALUES " +
"(?,?)", new String[]{"USERID"});
这里 USERID 是用户表的主键名称。两种方法都没有奏效。我该如何解决这个问题?
解决方案
试试这个:
INSERT INTO Users(FIRSTNAME,STATUS) OUTPUT Inserted.ID VALUES (?,?)
推荐阅读
- php - PHP 会话:$_SESSION 在 Mac 上本地运行时为空
- directed-acyclic-graphs - How can I encode a rule tree of multiple depths in Dhall?
- c# - 通过 id 获取时,EF Core 和 Automapper 未获取所有数据
- r - 计算 R 中每组的平均、最大、最小观察数
- html - 将 DIV 插入父 DIV 时排序错误
- python - 如何使用烧瓶显示多个文件
- android - 蓝牙耳机按钮上的自定义操作
- c# - 按照 Microsoft 教程构建 POST 请求但不起作用
- c - 在“select.h”中找不到“FD_SET”函数声明
- ios - KingFisher SwiftUI cancelOnDisappear 方法似乎不会阻止或取消 ScrollView 中的调用