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 $