Repository: incubator-groovy
Updated Branches:
  refs/heads/GROOVY_2_4_X cbf6aec77 -> 3a6b00180


groovy-sql doco: initial JDBC metadata handling doco


Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/5e96d4ae
Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/5e96d4ae
Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/5e96d4ae

Branch: refs/heads/GROOVY_2_4_X
Commit: 5e96d4aeb771fc0affd03007e78ffb6b42e1ca23
Parents: cbf6aec
Author: Paul King <pa...@asert.com.au>
Authored: Fri Apr 17 12:59:32 2015 +1000
Committer: Paul King <pa...@asert.com.au>
Committed: Mon Apr 20 17:22:38 2015 +1000

----------------------------------------------------------------------
 .../groovy-sql/src/spec/doc/sql-userguide.adoc  | 10 ++++++
 .../groovy-sql/src/spec/test/SqlTest.groovy     | 33 ++++++++++++++++++++
 2 files changed, 43 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/5e96d4ae/subprojects/groovy-sql/src/spec/doc/sql-userguide.adoc
----------------------------------------------------------------------
diff --git a/subprojects/groovy-sql/src/spec/doc/sql-userguide.adoc 
b/subprojects/groovy-sql/src/spec/doc/sql-userguide.adoc
index 2c0202d..f679e6a 100644
--- a/subprojects/groovy-sql/src/spec/doc/sql-userguide.adoc
+++ b/subprojects/groovy-sql/src/spec/doc/sql-userguide.adoc
@@ -236,6 +236,16 @@ 
include::{rootProjectDir}/subprojects/groovy-sql/src/spec/test/SqlTest.groovy[ta
 
 === Fetching metadata
 
+JDBC metadata can be retrieved in numerous ways. Perhaps the most basic 
approach is to extract the metadata from any row as shown here:
+
+[source,groovy]
+.Using row metadata
+----
+include::{rootProjectDir}/subprojects/groovy-sql/src/spec/test/SqlTest.groovy[tags=sql_basic_metadata,indent=0]
+----
+
+Advanced options for metadata handling using closures are also possible.
+
 (TBD)
 
 === Named and named-ordinal parameters

http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/5e96d4ae/subprojects/groovy-sql/src/spec/test/SqlTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-sql/src/spec/test/SqlTest.groovy 
b/subprojects/groovy-sql/src/spec/test/SqlTest.groovy
index 3e09362..bfa5daf 100644
--- a/subprojects/groovy-sql/src/spec/test/SqlTest.groovy
+++ b/subprojects/groovy-sql/src/spec/test/SqlTest.groovy
@@ -289,6 +289,39 @@ class SqlTest extends GroovyTestCase {
         '''
     }
 
+    void testMetadata() {
+        assertScript '''
+            import groovy.sql.Sql
+
+            def url = 'jdbc:hsqldb:mem:yourDB'
+            def user = 'sa'
+            def password = ''
+            def driver = 'org.hsqldb.jdbcDriver'
+            Sql.withInstance(url, user, password, driver) { sql ->
+              sql.execute """
+              DROP TABLE Author IF EXISTS
+              """
+              sql.execute """
+              CREATE TABLE Author (
+                id          INTEGER GENERATED BY DEFAULT AS IDENTITY,
+                firstname   VARCHAR(64),
+                lastname    VARCHAR(64)
+              )
+              """
+              sql.execute "INSERT INTO Author (firstname, lastname) VALUES 
('Dierk', 'Koenig')"
+
+              // tag::sql_basic_metadata[]
+              sql.eachRow("SELECT * FROM Author where firstname = 'Dierk'") { 
row ->
+                def md = row.getMetaData()
+                assert md.getTableName(1).toLowerCase() == 'author'
+                assert (1..md.columnCount).collect{ 
md.getColumnTypeName(it).toLowerCase() } == ['integer', 'varchar', 'varchar']
+                assert (1..md.columnCount).collect{ 
md.getColumnLabel(it).toLowerCase() } == ['id', 'firstname', 'lastname']
+              }
+              // end::sql_basic_metadata[]
+            }
+        '''
+    }
+
     void testDeletingRows() {
         assertScript '''
         import groovy.sql.Sql

Reply via email to