{"id":571,"date":"2011-03-15T12:19:17","date_gmt":"2011-03-15T10:19:17","guid":{"rendered":"https:\/\/bob-team.de\/wordpress\/?p=571"},"modified":"2018-01-29T08:15:52","modified_gmt":"2018-01-29T07:15:52","slug":"groovy-und-jdbc","status":"publish","type":"post","link":"https:\/\/bob-team.de\/wordpress\/2011\/03\/15\/groovy-und-jdbc\/","title":{"rendered":"Groovy und JDBC"},"content":{"rendered":"<p>Das Beispiel demonstriert verschiedenen Aspekte im Zusammenspiel <a href=\"http:\/\/groovy-lang.org\/databases.html\">Groovy\/SQL<\/a>, JDBC und <a href=\"http:\/\/www.h2database.com\">H2<\/a>. Zuerst wird eine Datenbank angelegt. Dann werden Datens\u00e4tze hinzugef\u00fcgt. Die automatisch vergebene ID wird direkt ausgelesen. Eine Aktualisierung wird durchgef\u00fchrt und die Anzahl der bearbeiteten Zeilen ausgelesen. Zum Schluss wird der Tabelleninhalt <a href=\"http:\/\/download.oracle.com\/javase\/1.5.0\/docs\/api\/java\/util\/Formatter.html#syntax\">formatiert<\/a> aufgelistet.<!--more--><\/p>\n<p>Die Variable &#8222;rand&#8220; wird benutzt, um \u00fcber &#8222;ALTER TABLE&#8230;&#8220; jeweils einen neuen zuf\u00e4lligen Startwert vorzugeben. Ohne diesen Eingriff w\u00fcrde der Spaltenwert innerhalb der Demo einfach von 1 bis 3 hochgez\u00e4hlt werden.<\/p>\n<pre lang=\"groovy\">package bob.pokolm\r\n\r\nimport groovy.sql.Sql\r\n\r\nsql = Sql.newInstance(\r\n    \"jdbc:h2:C:\/temp\/database\",\r\n    \"sa\", \"\",\r\n    \"org.h2.Driver\")\r\n\r\nsql.execute(\"\"\"\r\nDROP TABLE IF EXISTS demotable;\r\nCREATE TABLE demotable (\r\n   foo IDENTITY,\r\n   bar VARCHAR(100)\r\n);\r\n\"\"\")\r\n\r\nrand = 0\r\n\r\ninsert = {\r\n    rand += new Random().nextInt(10)\r\n    sql.execute('''ALTER TABLE demotable\r\nALTER COLUMN foo RESTART WITH ''' + rand)\r\n    row = sql.executeInsert('INSERT INTO demotable(bar) VALUES(?)', [it])\r\n    \/\/println insert.dump()\r\n    println \"[insert] ${it} created (id = ${row[0][0]})\"\r\n    rand++\r\n}\r\n\r\ninsert ('abc')\r\ninsert ('def')\r\ninsert ('abc')\r\n\r\nupdate = sql.executeUpdate(\"\"\"UPDATE demotable\r\nSET bar = REGEXP_REPLACE(bar,'def', 'abc')\r\nWHERE bar LIKE 'def%'\"\"\")\r\nprintln \"[update] ${update} rows\"\r\n\r\nsql.eachRow('SELECT * FROM demotable ORDER BY 1') {\r\n    line = '[select] %04d | %s'\r\n    println String.format(line, it.foo, it. bar)\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Das Beispiel demonstriert verschiedenen Aspekte im Zusammenspiel Groovy\/SQL, JDBC und H2. Zuerst wird eine Datenbank angelegt. Dann werden Datens\u00e4tze hinzugef\u00fcgt. Die automatisch vergebene ID wird direkt ausgelesen. Eine Aktualisierung wird durchgef\u00fchrt und die Anzahl der bearbeiteten Zeilen ausgelesen. Zum Schluss wird der Tabelleninhalt formatiert aufgelistet.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[51],"class_list":["post-571","post","type-post","status-publish","format-standard","hentry","category-java","tag-groovy","entry"],"_links":{"self":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/comments?post=571"}],"version-history":[{"count":10,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/571\/revisions"}],"predecessor-version":[{"id":2238,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/571\/revisions\/2238"}],"wp:attachment":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/media?parent=571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/categories?post=571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/tags?post=571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}