使用 Groovy:不确定这是否是预期行为,但是当将 size() 应用于 GroovyRowresult 对象时,如果对象是通过调用 {Sql object}.rows( sql_select_text)。但是,如果 GroovyRowresult 对象是通过调用 {Sql object}.firstRow(sql_select_text) 创建的,它将返回返回记录中的字段数。问题似乎是对 {GroovyRowresult object}.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”运行它。
我把这个 issue 提交给 Groovy 大神审阅;我想我得看看他们怎么说。问题在这里找到。