LibreOffice BaseからFirebirdへ接続する

Windows XPにインストールしたFirebird2.5へ、LibreOffice BaseからJDBCドライバで接続してみた。Firebirdのインストール・ユーザ作成・データベース作成までは済んでいて、そのへんの手順は割愛する。

ホスト localhost, 127.0.0.1
ユーザ libreoffice
データベース C:\Firebird_Datafiles\LIBREOFFICE.FDB

Firebirdのバージョン。

C:\>isql "C:\Firebird_Datafiles\LIBREOFFICE.FDB" -u
 libreoffice -p libreoff
Database:  C:\Firebird_Datafiles\LIBREOFFICE.FDB, User: libreoffice
SQL> show version;
ISQL Version: WI-V2.5.0.26074 Firebird 2.5
Server version:
Firebird/x86/Windows NT (access method), version "WI-V2.5.0.26074 Firebird 2.5"
Firebird/x86/Windows NT (remote server), version "WI-V2.5.0.26074 Firebird 2.5/X
Net (KOSUKE-CC8026FE)/P12"
Firebird/x86/Windows NT (remote interface), version "WI-V2.5.0.26074 Firebird 2.
5/XNet (KOSUKE-CC8026FE)/P12"
on disk structure version 11.2
SQL>

JDBCドライバを取得する

JDBC用ドライバはFirebirdの公式サイトから入手可能。Javaのバージョンごとに用意されており、今回のクライアントには1.6が入っているので、「Jaybird 2.1.6 for JDK 1.6」をダウンロードし、適当な場所にzipを展開する。

Javaのバージョン。

C:\>java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)

C:\>

LibreOfficeでクラスパスを指定する

LibreOfficeを起動して「ツール」→「オプション」から「Java」を開き、クラスパスを設定する。「アーカイブを追加」を押して、ダウンロードしたJDBCドライバを指定してあげればOK。いくつかのjarファイルがあってどれを選べばいいか悩んだが、ひと通り試したところ「jaybird-full-2.1.6.jar」でいいらしい。「jaybird-2.1.6.rar」ではうまくいかなかった。

データベースウィザードからFirebirdへの接続を確立させる

LibreOffice Baseを起動すると、データベースウィザードが表示される。「既存のデータベースに接続」から「JDBC」を選んで次へ。
「データソースのURL」と「JDBCドライバクラス」には次のように入力する。

[データソースのURLはこれ]
firebirdsql:localhost/3050:C:\Firebird_Datafiles\LIBREOFFICE.FDB
[JDBCドライバクラスはこれ]
org.firebirdsql.jdbc.FBDriver

データソースのURLになんて入れればよいかがもっとも悩んだところ。

firebirdsql:[接続先ホストorIP]/[ポート番号(3050)]:[データベースファイルのフルパス]

こういうことでいいらしい。次へ進める前に「テストクラス」を押してエラーがでないか確認する。もしエラーがでた場合は、LibreOfficeのオプションから設定したクラスパスが誤っている。
ユーザ名・パスワードを入れてテスト接続を行い、エラーがでなければOK。

リモートからの接続がうまくいかない

Windows XPにインストールしたFirebirdへのループバック接続はうまくいってるけど、Xubuntu側から同じように接続しようとすると、「GDS Exception. 335544721. Unable to complete network request to host 192.168.1.31 (IPはWindows XPのもの)」とのエラーがでてしまった。エラーからは単純にネットワーク疎通の問題のようなんだけど、ファイアウォールを切る等してもうまくいかない。Firebirdのクライアントを入れないとダメか。

$ apt-cache search firebird client
python-kinterbasdb - Python DB API 2.0 extension for Firebird and Interbase
python-kinterbasdb-dbg - Python DB API 2.0 extension for Firebird and Interbase (debug extension)
firebird2.1-common - common files for firebird 2.1 servers and clients
firebird2.1-super - Firebird Super Server - an RDBMS based on InterBase 6.0 code
firebird2.5-common - common files for firebird 2.5 servers and clients
firebird2.5-super - Firebird Super Server - an RDBMS based on InterBase 6.0 code
libfbclient2 - Firebird client library
libfbembed2.1 - Firebird embedded client/server library
libfbembed2.5 - Firebird embedded client/server library
$