如何返回java中最后添加项的最后一个主键?

如何返回java中最后添加项的最后一个主键?,java,database,methods,primary-key,return,Java,Database,Methods,Primary Key,Return,具有具有双主键的链接(或ref)表。需要返回从所选表中的当前连接自动生成的最后一个主键。这是用java编写的。 数据库在MS Access中,如果这有区别的话。 很抱歉这么匆忙的描述,但是我们的团队工作时间很紧 任何链接或建议都将不胜感激 编辑: 使用SQL填充数据库。我们为一个表单输入数据,但不知道自动生成的数字。需要找出这是什么,以便可以输入到ref表中。我们只知道一半的复合密钥,这就是为什么我们需要第二个 编辑: 你是目前为止最好的答案(似乎无法评论)。 我得到以下错误。。。 线程“AWT

具有具有双主键的链接(或ref)表。需要返回从所选表中的当前连接自动生成的最后一个主键。这是用java编写的。 数据库在MS Access中,如果这有区别的话。 很抱歉这么匆忙的描述,但是我们的团队工作时间很紧

任何链接或建议都将不胜感激

编辑:

使用SQL填充数据库。我们为一个表单输入数据,但不知道自动生成的数字。需要找出这是什么,以便可以输入到ref表中。我们只知道一半的复合密钥,这就是为什么我们需要第二个

编辑:

你是目前为止最好的答案(似乎无法评论)。 我得到以下错误。。。 线程“AWT-EventQueue-0”java.lang.UnsupportedOperationException中出现异常


有什么建议吗?

将复合键的两个值放入一个包含两个元素的对象数组中,然后返回该数组


或者,将新的复合键放入刚刚保存的实例中并返回该实例。

将复合键的两个值放入包含两个元素的对象数组中并返回该值


或者,将新的复合键放在刚刚保存的实例中,并返回该实例。

语句。getGeneratedKeys()应执行此操作…

语句。getGeneratedKeys()应执行此操作…

您需要做两件事。首先,在准备语句或执行语句时,必须传入一个额外的参数。如果使用准备好的语句,请执行以下操作:

stmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
如果未使用准备好的语句,请在调用executeUpdate()时执行以下操作:

执行语句后,可以调用

ResultSet rs = stmt.getGeneratedKeys()
这将为您提供一个结果集,其中包含生成的任何键


我还没有在Access中尝试过这种方法,但它在SQL Server标识列中运行良好。

您需要做两件事。首先,在准备语句或执行语句时,必须传入一个额外的参数。如果使用准备好的语句,请执行以下操作:

stmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
如果未使用准备好的语句,请在调用executeUpdate()时执行以下操作:

执行语句后,可以调用

ResultSet rs = stmt.getGeneratedKeys()
这将为您提供一个结果集,其中包含生成的任何键


我还没有在Access中尝试过这种方法,但它在SQL Server标识列中工作得很好。

UnsupportedOperationException真让人痛心。可能是Access不支持此操作。谷歌搜索,似乎不是所有的数据库都支持这种功能。例如,在我为Oracle工作时,我们不得不使用不同的方法,因为它没有标识列。如果重新设计密钥还不算太晚,请尝试切换到基于UUID的密钥,这样您就可以用Java生成密钥并将它们推送到数据库中,而不是让db生成它们。不过,做出改变可能太晚了。这个项目的时间不够了。太重要了。如果有人对解决方案感兴趣,那么有一个。将reord保存到一个seprate loation,并将其复制到最后保存的reord,n如果相同,则获取该密钥,然后获取下一个最后保存的reord,et et,直到找到密钥。对不起,我的C键因某些原因无法使用,仅限Cap,wtf?对不支持的操作异常大喊大叫。可能是Access不支持此操作。谷歌搜索,似乎不是所有的数据库都支持这种功能。例如,在我为Oracle工作时,我们不得不使用不同的方法,因为它没有标识列。如果重新设计密钥还不算太晚,请尝试切换到基于UUID的密钥,这样您就可以用Java生成密钥并将它们推送到数据库中,而不是让db生成它们。不过,做出改变可能太晚了。这个项目的时间不够了。太重要了。如果有人对解决方案感兴趣,那么有一个。将reord保存到一个seprate loation,并将其复制到最后保存的reord,n如果相同,则获取该密钥,然后获取下一个最后保存的reord,et et,直到找到密钥。对不起,我的C键因某些原因无法使用,仅限Cap,wtf?lolI本人正在通过ODBC使用Java 1.7和Access 2010进行尝试,我可以确认在调用stmt.executeUpdate函数时,我也收到了Java.lang.UnsupportedOperationExection。我正在通过ODBC使用Java 1.7和Access 2010进行尝试,我可以确认,在调用stmt.executeUpdate函数时,我也收到了java.lang.UnsupportedOperationExection。