Skip to content

OpenOffice / LibreOffice Base のデータベースファイル (*.odb) 中の埋め込み HSQLDB (HyperSQL Database) に接続する為のツール

Notifications You must be signed in to change notification settings

k650250/libreoffice-sdbc-hsqldb-bridgebuilder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

libreoffice-sdbc-hsqldb-bridgebuilder

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

ダウンロードとビルド

macOS / Linux
  1. コンソール(ターミナル)を開く
  2. ホームディレクトリ(~)下の任意の空のディレクトリを、作業ディレクトリとする
  3. コンソールに、次の内容を貼り付け、エンターキーを押す
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
  1. エクスプローラーを開く
  2. 「ドキュメント」フォルダ下の任意の空のフォルダを開く
  3. アドレスバーにpowershellと入力し、エンターキーを押す
  4. 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プログラムやJVM言語のスクリプトを用いたcom.k650250.odb.ODBFileの動作確認

./lib/odb.jarに埋め込まれたテストドライバプログラムを実行する

java -jar "./lib/odb.jar"

Clojure (*.clj) で記述されたテストドライバプログラムを実行する

lein exec "./src/TestDriver.clj"

Groovy (*.groovy) で記述されたテストドライバプログラムを実行する

groovy -cp "./lib/hsqldb.jar:./lib/odb.jar" "./src/TestDriver.groovy"

Kotlinscript (*.kts) で記述されたテストドライバプログラムを実行する

kotlinc-jvm -cp "./lib/hsqldb.jar:./lib/odb.jar" -script "./src/TestDriver.main.kts"

Jython/JPython (*.py) で記述されたテストドライバプログラムを実行する

jython "./src/TestDriver.py"

JRuby (*.rb) で記述されたテストドライバプログラムを実行する

jruby -J-cp "./lib/hsqldb.jar:./lib/odb.jar" "./src/TestDriver.rb"

Scala (*.scala) で記述されたテストドライバプログラムを実行する

scala -cp "./lib/hsqldb.jar:./lib/odb.jar" ./src/TestDriver.scala

SQL コマンドラインシェルの動作確認

SQL スクリプトファイル./init.sqlを実行する

java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=,charset=utf-8" -- "init.sql"

※ 上記コマンドラインの--以降の引数が、./lib/hsqldb.jarorg.hsqldb.util.SqlToolに渡される。

現在のテーブルt_sampleの中身を全件表示する

java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=" -- --sql 'SELECT * FROM "t_sample";'

REPL を起動する

java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=,charset=utf-8"
Windows

JavaプログラムやJVM言語のスクリプトを用いたcom.k650250.odb.ODBFileの動作確認

./lib/odb.jarに埋め込まれたテストドライバプログラムを実行する

java -jar "./lib/odb.jar"

Clojure (*.clj) で記述されたテストドライバプログラムを実行する

lein exec "./src/TestDriver.clj"

Groovy (*.groovy) で記述されたテストドライバプログラムを実行する

groovy -cp '"./lib/hsqldb.jar;./lib/odb.jar"' "./src/TestDriver.groovy"

Kotlinscript (*.kts) で記述されたテストドライバプログラムを実行する

kotlinc-jvm -cp '"./lib/hsqldb.jar;./lib/odb.jar"' -script "./src/TestDriver.main.kts"

Jython/JPython (*.py) で記述されたテストドライバプログラムを実行する

jython "-Dfile.encoding=MS932" "./src/TestDriver.py"

JRuby (*.rb) で記述されたテストドライバプログラムを実行する

jruby -J-cp "./lib/hsqldb.jar;./lib/odb.jar" "./src/TestDriver.rb"

Scala (*.scala) で記述されたテストドライバプログラムを実行する

cs launch scala3 -- -cp "./lib/hsqldb.jar;./lib/odb.jar" ./src/TestDriver.scala

SQL コマンドラインシェルの動作確認

SQL スクリプトファイル./init.sqlを実行する

java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=,charset=utf-8" -- "init.sql"

※ 上記コマンドラインの--以降の引数が、./lib/hsqldb.jarorg.hsqldb.util.SqlToolに渡される。

現在のテーブルt_sampleの中身を全件表示する

java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=" -- --sql 'SELECT * FROM "t_sample";'

REPL を起動する

java -jar "./lib/odbsql.jar" "sample.odb" "user=sa,password=,charset=cp932"

REPL 上での操作

全件表示する
SELECT * FROM "t_sample";
データを追加する
INSERT INTO "t_sample"("value") VALUES('あいうえお');
確定する
COMMIT;
REPL を終了する
\q

パスワード

SET PASSWORD "hogehoge";hogehogeをパスワードに設定でき、SET PASSWORD "";で解除できる。但し、パスワードを設定すると LibreOffice で操作できなくなる。パスワードを設定する際は、誤って LibreOffice で開かないように、対象ファイル名の拡張子を変更(例:sample.odbx)しておくことを推奨する。

使用した外部ツール/ライブラリ

HSQLDB のバージョンは1.8.0.10、LibreOffice のバージョンは7.4.3.2であることを前提としています。

About

OpenOffice / LibreOffice Base のデータベースファイル (*.odb) 中の埋め込み HSQLDB (HyperSQL Database) に接続する為のツール

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published