我很难过。我需要在查询循环中访问下一个nth row
以显示帖子之间的版本差异。
我正在使用<cfquery>
按组输出修订版,这是我预期的输出:
Rev4
diff(rev4.title, original.title)
diff(rev4.brief, rev2.brief)
Rev3
diff(rev3.body, rev2.body)
Rev2
diff(rev2.brief, original.brief)
diff(rev2.body, original.body)
Original
query.title
query.brief
query.body
我最初想到use Java methods来获取下一个查询行。这不起作用:
我用Java标记了这个,因为ColdFusion允许我们use Java methods on queries objects,但它没有记录,因此只知道它的存在对我没有帮助。
任何人都可以告诉我[更好]这样做的方法吗?
我想到的代码结构:
<cfoutput query="revisions" group="revisionGUID">
#revision.revisionGUID#
<cfoutput>
// conditional logic to get diff();
<cfoutput>
</cfoutput>
答案 0 :(得分:1)
很抱歉我不知道Coldfusion,但听起来(Java)可滚动的resultSet可能很有用。
来自oracle信息页面:
5.1滚动
通过执行语句创建的结果集可以 支持通过它向后移动(从最后到第一个)的能力 内容,以及前进(从头到尾)。支持的结果集 此功能称为可滚动结果集。结果设置了 可滚动也支持相对和绝对定位。 绝对定位是指直接移动到行的能力 指定其在结果集中的绝对位置,而相对 定位通过指定a来提供移动到行的能力 相对于当前行的位置。 (link: result set enhancements)
结果集api在顶部简要提到它:
默认的ResultSet对象不可更新,并且有一个游标 只向前迈进。因此,您只需迭代一次即可 仅从第一行到最后一行。有可能生产 可滚动和/或可更新的ResultSet对象。下列 代码片段,其中con是有效的Connection对象,说明了 如何创建可滚动且对更新不敏感的结果集 由其他人,这是可更新的。请参阅其他的ResultSet字段 选项。
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSet.html
希望这可以帮助您找到您要找的东西=)
答案 1 :(得分:1)
如果您让数据库帮助您并使用以下查询来查找字段的先前值,那该怎么样:
SELECT TITLE AS PREVIOUSTITLE
FROM REVISIONS
WHERE ID < #query.id# AND TITLE <> '#query.title#'
ORDER BY ID DESC
SELECT BRIEF AS PREVIOUSBRIEF
FROM REVISIONS
WHERE ID < #query.id# AND BRIEF <> '#query.brief#'
ORDER BY ID DESC
SELECT BODY AS PREVIOUSBODY
FROM REVISIONS
WHERE ID < #query.id# AND BODY <> '#query.body#'
ORDER BY ID DESC
如果recordcount为0,则表示该字段从未更改过。