使用Groovy:不确定这是否是预期的行为,但是当使用应用于GroovyRowresult对象的size()时,如果通过调用{Sql object}创建对象,它将返回对象中的行数.rows(sql_select_text)。但是,如果GroovyRowresult对象是通过调用{Sql object} .firstRow(sql_select_text)创建的,则它将返回返回记录中 fields 的数量。问题似乎是对{GroovyRowresult对象} .size()的调用的返回值取决于GroovyRowresult对象是如何形成的,而不是其他任何明显或明显区别的东西。这是否是预期的行为?即使对于最新的版本,我也无法在Groovy文档中找到它。 Groovy。代码示例:
/*
Using HyperSQL for database implementation for test, so you need the
HSQLDB package from http://hsqldb.org/ to run this test in the Groovy
runtime classpath or explode the hsqldb.jar file into the same directory as this
.groovy script.
*/
import groovy.sql.Sql
memCon = Sql.newInstance("jdbc:hsqldb:mem", "SA", "","org.hsqldb.jdbcDriver")
memCon.execute("DROP TABLE IF EXISTS TBL")
memCon.execute("""create table TBL (
AAA VARCHAR(50),
BBB VARCHAR(50)
)""")
sql = "INSERT INTO TBL VALUES ('123', 'ABC')"
memCon.execute(sql)
sql = "INSERT INTO TBL VALUES ('456', 'ABC')"
memCon.execute(sql)
sql = "INSERT INTO TBL VALUES ('789', 'ABC')"
memCon.execute(sql)
sql = "select * from TBL"
rows = memCon.rows(sql)
println '(.rows) rows.size() = ' + rows.size() // returns 3
rows = memCon.firstRow(sql)
println '(.firstRow) rows.size() = ' + rows.size() // returns 2
测试:将上面的代码列表保存到名为“test.groovy”的文件中。将它放在与hsqldb.jar文件相同的目录中(如果您更改了Groovy运行时类路径以包含对它的引用)或其展开的文件结构,并使用“groovy test.groovy”运行它。
我提交了这个问题供Groovy众神审查;我想我必须看看他们说什么。找到问题here。