2012-07-12 95 views
1

我如何可以检索数据库中列的最后输入值(MS Access 2007年)的最后一个值怎样才能

我用下面的代码

String sql = "SELECT Last(RegNumber) FROM Death "; 

,但它不在MS访问工作和当我运行该程序时出现错误,生成作为

java.sql.SQLException: Column not found 

但我已经建立在数据库中的列作为RegNumber

我使用Java编程中,我用这个查询

编辑:

RegNumber是String形式不以整数形式,所以我不能用DESC或ASC

请帮我

+1

该查询并在MS Access本身的工作,提供如你说,正确的列是正确的表格。Java SQL插件可能无法识别该命令,并将其解释为名为“Last(RegNumber)”的列 – StuckAtWork 2012-07-12 19:34:29

+1

如果要在多用户环境中创建记录并且希望返回记录的ID刚刚创建,这不是一个好办法。 – Fionnuala 2012-07-12 19:43:52

+0

同意;到目前为止给出的方法意味着您希望检索某个查询的最后一行,而不是获取最后插入/编辑的行。还有其他的功能。 – StuckAtWork 2012-07-12 19:45:15

回答

2

按任何标准对表格进行排序并使用SELECT TOP 1 * FROM myTable ORDER BY RegNumber ASC

或者ORDER BY incrementingId DESC

基本上一定是有逻辑顺序排序为你指的是什么的“最后输入栏”(我假设是指行,不列)

编辑:你的功能在Access中是正确的,并且应该返回正确的值。但是Java可能无法正确解释它。在Access本地查询中尝试查询,然后尝试调试Java。如果它仅仅是Java不支持此功能,请考虑使用java.sql中

ResultSet rs = ....; 
rs.last(); 
int RegNumber = rs.getRow(); 
+1

如果您需要* n *个结果,则Top * n *会返回多个* n *值,因此您必须根据所需列和唯一ID进行排序。 – Fionnuala 2012-07-12 19:39:17

1

我不知道在MS ACCESSlast()功能内置的ResultSet()函数,但我有另一个想法:

通常有一个自动生成的id每个table,这样你就可以排序,并从结果集这样得到的第一条记录:

SELECT RegNumber 
FROM Death 
ORDER BY id DESC 
+0

Last()和First()确实是MS Access的SQL函数。请参阅http://office.microsoft.com/en-us/access-help/first-last-functions-HP001032232.aspx – StuckAtWork 2012-07-12 19:35:28

1

那d依赖于你的数据库结构。

通常用表来一些独特的标识符,如果你确定它在顺序是:总是数据库,你可以使用函数MAX检索标识,然后整行。

另一个场景就是描述列创建时间的时间戳列,如果不是id就足够了,这个方法会非常重要。

1

继将返回最后和最新的RegNumber:

SELECT RegNumber FROM Death ORDER BY RegNumber DESC