Groovy の使用: これが意図した動作かどうかはわかりませんが、GroovyRowresult オブジェクトに適用された size() を使用すると、オブジェクトが {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」で実行します。
Groovy の神々によるレビューのためにこの号を提出しました。私は彼らが何を言うかを見る必要があると思います。問題はここにあります。