首页 > 解决方案 > 无法在 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 是用户表的主键名称。两种方法都没有奏效。我该如何解决这个问题?

标签: javasql-serverjdbc

解决方案


试试这个:

INSERT INTO Users(FIRSTNAME,STATUS) OUTPUT Inserted.ID VALUES (?,?)

推荐阅读