gpt4 book ai didi

java - SQL:从executeUpdate获取自动递增列的值

转载 作者:行者123 更新时间:2023-11-29 11:42:41 24 4
gpt4 key购买 nike

我试图在输入新行后获取自动递增的列。我的表格中有以下列:

+----+---------+---------+-------+------------+--------------+------------+---------------+-----------+
| ID | Minkita | Maxkita | Meser | MetodasNum | MainQuestion | MetodaData | RequiresZiood | Nispachim |
+----+---------+---------+-------+------------+--------------+------------+-----

其中 ID 是一个自动递增的、不为 null 的mediumint。

我的JSP代码:

PreparedStatement s = connection.prepareStatement(
"INSERT INTO Threads"
+"(`MinKita`, `MaxKita`, `Meser`, `MetodasNum`, `MainQuestion`, `MetodaData`, `RequiresZiood`, `Nispachim`)"
+" VALUES(?, ?, ?, ?, ?, ? ,? ,?)"
);
//Blah blah, setting strings and values for the prepared statement... Then:
s.executeUpdate();

现在,我知道executeUpdate 返回我的新行的行号,但我想要做的是从我的行号中获取ID。

问题是,ID 不一致,它们的顺序可能如下:1, 2, 5, 7, 13...因为行可能会被删除。

那么,如何从行号中获取ID列中的数据呢?

提前致谢,

~NonameSL

最佳答案

您可以使用以下命令在执行 INSERT 时获取生成的 ID:

首先创建一个PreparedStatement,它返回自动增量列的生成值:

PreparedStatement s = connection.prepareStatement(
"INSERT INTO <your sql>",
Statement.RETURN_GENERATED_KEYS);

执行该语句后,您可以按如下方式检索 ID:

s.executeUpdate();
ResultSet result = stmt.getGeneratedKeys();
if (result.next())
id = result.getObject(1);

如果表中有多个 AUTO_INCRMENT 列,您还可以指定应返回的列:

PreparedStatement s = connection.prepareStatement(
"INSERT INTO <your sql>",
new String[] { "ID" }); // the ID column only

关于java - SQL:从executeUpdate获取自动递增列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35506762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com