OpenOffice / LibreOffice Base のデータベースファイル (*.odb) の埋め込み HSQLDB (HyperSQL Database Engine) に接続する為のツール。
例えば、./sample.odb
の埋め込み HSQLDB にスタンドアロンモードで接続する際、
[Java]
try (Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:./sample.odb;shutdown=true", "sa", "")) {
// 諸々の処理
}
[Kotlinscript]
DriverManager.getConnection("jdbc:hsqldb:file:./sample.odb;shutdown=true", "sa", "").use { conn ->
// 諸々の処理
}
では接続不可能ですが、当ツールを導入し、次のように修正することによって接続可能となります。
[Java]
- try (Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:./sample.odb;shutdown=true", "sa", "")) {
+ try (ODBFile odbFile = ODBFile.open("sample.odb"); Connection conn = DriverManager.getConnection(odbFile.toUrl(), "sa", "")) {
// 処理
}
[Kotlinscript]
+ ODBFile.open("sample.odb").use { odbFile ->
- DriverManager.getConnection("jdbc:hsqldb:file:./sample.odb;shutdown=true", "sa", "").use { conn ->
+ DriverManager.getConnection(odbFile.toUrl(), "sa", "").use { conn ->
// 処理
}
+ }
上記コードは、Javaはworkdir/src/TestDriver.java
、Kotlinはworkdir/src/TestDriver.kts
を参考。
読 | 書 | |
---|---|---|
テーブル(とビュー) | ✔ | ✔ |
クエリー | ✔ | ✖ |
フォーム | ✖ | ✖ |
レポート | ✖ | ✖ |
- 必須
- javac 19.0.1
- 任意:テストドライバプログラム実行用
- Leiningen 2.10.0
- Clojure 1.11.1
- Groovy 4.0.8
- Kotlin 1.7.21
- Jython 2.7.1
- JRuby 9.1.17.0 (2.3.3)
- Scala 3.2.1
- Leiningen 2.10.0
macOS / Linux
- コンソール(ターミナル)を開く
- ホームディレクトリ(
~
)下の任意の空のディレクトリを、作業ディレクトリとする - コンソールに、次の内容を貼り付け、エンターキーを押す
mkdir -p './tmp' ; cd './tmp' ; curl -sL 'https://github.com/k650250/libreoffice-sdbc-hsqldb-bridgebuilder/archive/refs/heads/main.zip' | jar -x 'libreoffice-sdbc-hsqldb-bridgebuilder-main/workdir/' ; curl -sL 'https://ja.osdn.net/frs/g_redir.php?m=jaist&f=hsqldb%2Fhsqldb%2Fhsqldb_1_8_0%2Fhsqldb_1_8_0_10.zip' | jar -x 'hsqldb/lib/hsqldb.jar' ; cd '../' ; mv -f ./tmp/libreoffice-sdbc-hsqldb-bridgebuilder-main/workdir/* '.' ; mv -f './tmp/hsqldb/lib/hsqldb.jar' './lib/.' ; rm -rf 'tmp' ; javac -encoding 'UTF-8' ./src/*.java -d '.' ; jar -cfm './lib/odb.jar' './mf.txt' 'com' ; jar -cfm './lib/odbsql.jar' './mfsql.txt' ; ls
Windows
- エクスプローラーを開く
- 「ドキュメント」フォルダ下の任意の空のフォルダを開く
- アドレスバーに
powershell
と入力し、エンターキーを押す - Windows PowerShell ウィンドウに、次の内容を貼り付け、エンターキーを押す
New-Item -Name "tmp" -ItemType "directory" -Force > $null ; Invoke-WebRequest -Uri "https://github.com/k650250/libreoffice-sdbc-hsqldb-bridgebuilder/archive/refs/heads/main.zip" -OutFile ".\tmp/main.zip" ; Invoke-WebRequest -Uri "https://ja.osdn.net/frs/g_redir.php?m=jaist&f=hsqldb%2Fhsqldb%2Fhsqldb_1_8_0%2Fhsqldb_1_8_0_10.zip" -OutFile ".\tmp\hsqldb_1_8_0_10.zip" ; Expand-Archive -Path ".\tmp\main.zip" -DestinationPath ".\tmp" -Force ; Expand-Archive -Path ".\tmp\hsqldb_1_8_0_10.zip" -DestinationPath ".\tmp" -Force ; Get-ChildItem ".\tmp\libreoffice-sdbc-hsqldb-bridgebuilder-main\workdir" -Include "*" -Recurse | Move-Item -Force ; Move-Item -Path ".\tmp\hsqldb\lib\hsqldb.jar" -Destination ".\lib" -Force ; Remove-item -Path ".\tmp" -Recurse ; javac -encoding "UTF-8" "./src/*.java" -d "." ; jar -cfm "./lib/odb.jar" "./mf.txt" "com" ; jar -cfm "./lib/odbsql.jar" "./mfsql.txt" ; Get-ChildItem
最終的に次のようなファイル構成となる。
./
┣ com/
︙
┣ lib/
┃┣ dummy
┃┣ hsqldb.jar
┃┣ odb.jar
┃┗ odbsql.jar
┣ src/
┃┣ ODBFile.java
┃┣ Query.java
┃┣ SqlToolWrapper.java
┃┣ TestDriver.clj
┃┣ TestDriver.groovy
┃┣ TestDriver.java
┃┣ TestDriver.main.kts
┃┣ TestDriver.py
┃┣ TestDriver.rb
┃┗ TestDriver.scala
┣ init.sql
┣ logging.properties
┣ mf.txt
┣ mfsql.txt
┗ sample.odb
macOS / Linux
java -jar "./lib/odb.jar"
lein exec "./src/TestDriver.clj"
groovy -cp "./lib/hsqldb.jar:./lib/odb.jar" "./src/TestDriver.groovy"
kotlinc-jvm -cp "./lib/hsqldb.jar:./lib/odb.jar" -script "./src/TestDriver.main.kts"
jython "./src/TestDriver.py"
jruby -J-cp "./lib/hsqldb.jar:./lib/odb.jar" "./src/TestDriver.rb"
scala -cp "./lib/hsqldb.jar:./lib/odb.jar" ./src/TestDriver.scala
java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=,charset=utf-8" -- "init.sql"
※ 上記コマンドラインの--
以降の引数が、./lib/hsqldb.jar
のorg.hsqldb.util.SqlTool
に渡される。
java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=" -- --sql 'SELECT * FROM "t_sample";'
java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=,charset=utf-8"
Windows
java -jar "./lib/odb.jar"
lein exec "./src/TestDriver.clj"
groovy -cp '"./lib/hsqldb.jar;./lib/odb.jar"' "./src/TestDriver.groovy"
kotlinc-jvm -cp '"./lib/hsqldb.jar;./lib/odb.jar"' -script "./src/TestDriver.main.kts"
jython "-Dfile.encoding=MS932" "./src/TestDriver.py"
jruby -J-cp "./lib/hsqldb.jar;./lib/odb.jar" "./src/TestDriver.rb"
cs launch scala3 -- -cp "./lib/hsqldb.jar;./lib/odb.jar" ./src/TestDriver.scala
java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=,charset=utf-8" -- "init.sql"
※ 上記コマンドラインの--
以降の引数が、./lib/hsqldb.jar
のorg.hsqldb.util.SqlTool
に渡される。
java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=" -- --sql 'SELECT * FROM "t_sample";'
java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=,charset=cp932"
SELECT * FROM "t_sample";
INSERT INTO "t_sample"("value") VALUES('あいうえお');
COMMIT;
\q
SET PASSWORD "hogehoge";
でhogehoge
をパスワードに設定でき、SET PASSWORD "";
で解除できる。但し、パスワードを設定すると LibreOffice で操作できなくなる。パスワードを設定する際は、誤って LibreOffice で開かないように、対象ファイル名の拡張子を変更(例:sample.odbx
)しておくことを推奨する。
- HyperSQL Database Engine (HSQLDB) - Browse Files at SourceForge.net
- HSQLDB-1.8.0.10
hsqldb.jar
は、ダウンロードしたzipファイルの中のlib
ディレクトリの中に存在するhsqldb.jar
をworkdir/lib
ディレクトリの中に配置する
- HSQLDB-1.8.0.10
- download | LibreOffice(リブレオフィス) - 無料で自由に使えるオフィスソフト - OpenOffice.orgの進化系 - Microsoft Officeと高い相互運用性
HSQLDB のバージョンは1.8.0.10
、LibreOffice のバージョンは7.4.3.2
であることを前提としています。