Java获取当前插入行的自动递增编号,以便将其用于另一个查询? publicstaticvoidupdatehistory(客户端){ 试一试{ 如果(获胜者!=null){ getDatabase().newQuery(“插入锦标赛(`players`、`winner`、`winnerKills`、`map`、`prize`)值(“+tournyPlayers.size()+”、“+winner.playerName+”、“+winner.killCount+”、'Wilderness'、“+winner.gameScore+”)); } 否则{ getDatabase().newQuery(“插入到锦标赛(`players`、`winner`、`winnerKills`、`map`、`prize`)值(`“+tournyPlayers.size()+”、'None'、'None'、'Wildery'、'None'); } ArrayList玩家=TournyPlayer; 对于(int i=0;i

Java获取当前插入行的自动递增编号,以便将其用于另一个查询? publicstaticvoidupdatehistory(客户端){ 试一试{ 如果(获胜者!=null){ getDatabase().newQuery(“插入锦标赛(`players`、`winner`、`winnerKills`、`map`、`prize`)值(“+tournyPlayers.size()+”、“+winner.playerName+”、“+winner.killCount+”、'Wilderness'、“+winner.gameScore+”)); } 否则{ getDatabase().newQuery(“插入到锦标赛(`players`、`winner`、`winnerKills`、`map`、`prize`)值(`“+tournyPlayers.size()+”、'None'、'None'、'Wildery'、'None'); } ArrayList玩家=TournyPlayer; 对于(int i=0;i,java,mysql,Java,Mysql,我想做的是,插入一个新的锦标赛行,它将显示关于锦标赛的信息,现在我想将球员添加到锦标赛中(谁在比赛),所以我现在将每个球员添加到一个新行中,以及他的数据 但现在我想确保玩家匹配我插入的当前锦标赛。我无法创建当前服务器的唯一编号,因为服务器可能会停机并丢失计数 因此,我考虑使用插入的tournaments表的自动增量ID,并将其与插入的玩家一起添加,这样他的ID将成为tournaments表的自动增量ID 有没有一种方法可以在不使用我插入到锦标赛中的完全相同的数据的情况下获取自动增量ID(因为可能

我想做的是,插入一个新的锦标赛行,它将显示关于锦标赛的信息,现在我想将球员添加到锦标赛中(谁在比赛),所以我现在将每个球员添加到一个新行中,以及他的数据

但现在我想确保玩家匹配我插入的当前锦标赛。我无法创建当前服务器的唯一编号,因为服务器可能会停机并丢失计数

因此,我考虑使用插入的tournaments表的自动增量ID,并将其与插入的玩家一起添加,这样他的ID将成为tournaments表的自动增量ID

有没有一种方法可以在不使用我插入到锦标赛中的完全相同的数据的情况下获取自动增量ID(因为可能有两个锦标赛具有相同的状态,谁知道呢)

有没有办法做到这一点?


我正在考虑将带有日期+时间的MD5哈希添加到锦标赛行,然后将其添加到玩家行,这是一个好的解决方案吗?

看看
语句#getGeneratedKeys()
,它返回一个
结果集
,您可以使用该结果集来检索任何生成的主键

请注意,您需要给JDBC驱动程序一个提示,提示您在准备
PreparedStatement
时要检索生成的密钥

ResultSet rsKeys = statement.getGeneratedKeys();
if (rsKeys.next()) {
    tournament.setId(rsKeys.getLong(1));
}
connection.prepareStatement(strSQL, Statement.RETURN_GENERATED_KEYS);
或者,在执行
语句时

ResultSet rsKeys = statement.getGeneratedKeys();
if (rsKeys.next()) {
    tournament.setId(rsKeys.getLong(1));
}
connection.prepareStatement(strSQL, Statement.RETURN_GENERATED_KEYS);
参考:

检索由于执行此语句对象而创建的任何自动生成的键。如果此语句对象未生成任何键,则返回空的ResultSet对象


所以他的id将是锦标赛的自动递增id
不,球员id也应该是唯一的。考虑有一个外键列,将玩家与锦标赛关联起来,或者如果玩家可以参加多个锦标赛,则有一个PraveRead赛事关联表。