{link:http://hsqldb.org/} を groovy から使ってみたのでメモ。
hsqldb.jar をダウンロードして以下のように実行すればよいのですが...
java -Xms12m -Xmx24m \
-cp $dbhome/lib/hsqldb.jar org.hsqldb.server.Server
--database.0 file:/var/tmp/hsqldb/mydb --dbname.0 xdb > /dev/null 2>&1 &
hsqldb.jar ダウンロードする手間をかけないで、以下のように
{link:http://mvnrepository.com/artifact/org.hsqldb/hsqldb/2.0.0}を使って
@Grabだけで済ます方法があります。
@Grab(group='org.hsqldb', module='hsqldb', version='2.0.0')
myargs = ['--database.0','file:/var/tmp/hsqldb/mydb','--dbname.0','xdb'] as String[]
org.hsqldb.server.Server.main( myargs )
$ groovy hsqldb_server.groovy
[Server@1140709]: [Thread[main,5,main]]: checkRunning(false) entered
...
事前に hsqldb.jarを入手して、~/.groovy/lib/hsqldb.jar に配置しておく必要あり。
Grab で済ませる場合は... {link:http://d.hatena.ne.jp/uokumura/20101210/1291963162} を参考に...
import groovy.sql.Sql
db = Sql.newInstance('jdbc:hsqldb:hsql://localhost:9001/xdb', 'sa', '')
db.execute('create table word(id varchar(255),name varchar(255))')
db.execute("insert into word(id,name) values(?,?)",['1','Hello'])
db.execute("insert into word(id,name) values(?,?)",['2','World'])
db.close()
import groovy.sql.Sql
db = Sql.newInstance('jdbc:hsqldb:hsql://localhost:9001/xdb(, 'sa', '')
db.eachRow('select * from word'){ println it }
db.close()
import groovy.sql.Sql
oldpass = ''
newpass = 'hogehoge'
sql = Sql.newInstance('jdbc:hsqldb:hsql://localhost:9001/xdb', 'sa', oldpass)
sql.execute( "set password \"${newpass}\"".toString() )
sql.close()
パスワードが効いているか確認するため再度 test2.groovy を実行
$ groovy test2
Caught: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification
at test2.run(test2.groovy:4)
パスワード 'hogehoge' に変更して実行してみる。
import groovy.sql.Sql
db = Sql.newInstance('jdbc:hsqldb:hsql://localhost:9001/xdb', 'sa', 'hogehoge')
db.eachRow('select * from word'){ println it }
db.close()
今度はうまくいきました。
import groovy.sql.Sql
sql = Sql.newInstance('jdbc:hsqldb:hsql://localhost:9001/xdb', 'sa', 'hogehoge')
sql.execute( "shutdown".toString() )
sql.close()
HSQLDBは shutdown コマンドを使って終了しないとデータ変更結果が保存されないことがあるので注意が必要です。