2011-04-08 22 views
3

獲得最大價值,我有以下Groovy代碼從「ID」欄從「主題」表中返回的最大值:Groovy的SQL從一列

def rs = sql.executeQuery("select max(id) from topic") 

def maxId = rs.getLong(1) 

它不工作,我收到以下錯誤:

java.sql.SQLException: Invalid column index at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:147) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:209)...

是否有人知道正確的代碼是什麼? 謝謝。

回答

6

我認爲如果您使用方法firstRow會更容易。您可以通過名稱或索引從結果對象中獲取值。

的名字:

def row = sql.firstRow("select max(id) as max from topic") 
def maxId = row.max 

通過指數:

def row = sql.firstRow("select max(id) from topic") 
def maxId = row[0] 
+0

太好了,非常感謝! – C0deAttack 2011-04-08 16:40:51

+0

'row.max'對我不起作用,我得到'引起:groovy.lang.MissingPropertyException:沒有這樣的屬性:最大的類:groovy.sql.GroovyRowResult \t在groovy.sql.GroovyRowResult.getProperty(GroovyRowResult .java:64)' – 2012-02-16 01:04:53

+1

只有當你給這個列命名時:'as max'。 – 2012-02-17 01:14:21

1

似乎沒有人提到,在rs.getLong(1)指數是出界。 獲取字段使用起始索引0. 綁定字段使用起始索引1.爲什麼?歷史SQL行爲。