Java DB (Derby) データベースの操作
このドキュメントでは、NetBeans IDE で Sun の Java DB データベースへの接続を設定する方法を紹介します。いったん接続が作成されると、IDE でデータベースの操作を開始することができ、表の作成、表へのデータの生成、および SQL 文やクエリーの実行が可能になります。
Java DB データベースは、Sun がサポートする Apache Derby のディストリビューションです。Java DB は、完全なトランザクション型で、規格に準拠した、安全なデータベースサーバーです。すべて Java で記述されており、SQL、JDBC API、および Java EE テクノロジを完全にサポートしています。Java DB データベースは GlassFish V2 アプリケーションサーバーとともにパッケージ化されており、現在は JDK 6 にも含まれています。Java DB データベースの詳細は、公式ドキュメントをお読みください。
予想される所要時間: 30 分
目次

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。
注: Java DB は JDK 6 に含まれています。Web および Java EE 版 (またはフルインストール) の NetBeans IDE をインストールする場合は、GlassFish V2 アプリケーションサーバーを任意でインストールできます。これには、Java DB も含まれています。また、Sun Java System Application Server を使用している場合、Java DB データベースが含まれています。
データベースの構成
NetBeans IDE のインストールで GlassFish サーバーを登録した場合、Java DB はすでに登録されています。その場合、「サーバーの起動とデータベースの作成」に進むことができます。GlassFish (または Sun Java System Application Server) を別途ダウンロードしていて、NetBeans IDE への登録方法が不明な場合は、IDE のヘルプ目次 (F1) にある「Sun Java System Application Server/GlassFish インスタンスの登録」を参照してください。Java DB を単独でインストールした場合は、次の手順に従います。
- 自己抽出型のファイルを実行します。このファイルと同じ場所に「javadb」というフォルダが作成されます。Java DB をダウンロードしただけで、抽出先とは異なる場所にデータベースサーバーを置く場合は、ここで場所を変更します。
- Java DB のルートディレクトリ (javadb) に「databases」という新しいフォルダを作成します。このフォルダは、あとでデータベースサーバーの個別インスタンスを含めるために使用します。このフォルダはデータベースのルートディレクトリに存在する必要はありません。
次に進む前に、Java DB のルートディレクトリにあるコンポーネントについて理解しておく必要があります。
- demo サブディレクトリには、すべてのデモプログラムが含まれています。
- bin サブディレクトリには、ユーティリティーの実行や環境設定用のスクリプトが含まれています。
- javadoc サブディレクトリには、ソースコードのコメントから生成された API のドキュメントが含まれています。
- docs サブディレクトリには、Java DB のドキュメントが含まれています。
- lib サブディレクトリには、Java DB jar ファイルが含まれています。
- frameworks サブディレクトリには、ユーティリティーの実行や環境設定用の旧式のスクリプトが含まれています。一般に、これらスクリプトは下位互換性のために提供されています。今後のリリースでは、bin ディレクトリ内のスクリプトを優先するために、非推奨になる可能性があります。
NetBeans IDE へのデータベースの登録
データベースを構成すると、IDE でそのデータベースを登録できます。
「サービス」ウィンドウで「Java DB」データベースノードを右クリックし、「プロパティー」を選択します。
「Java DB 設定」ダイアログが表示されます。
- 「Java DB インストール」テキストフィールドに、前の手順で指定した Java DB のルートディレクトリ (javadb) のパスを入力します。
-
「データベースの場所」に、新しく作成した「databases」フォルダのパスを設定します。次の画面は、Macintosh での Java DB サーバーの設定例を示しています。完了したら、「了解」をクリックします。

サーバーの起動とデータベースの作成
「サービス」ウィンドウで「Java DB」ノードを右クリックすると、Java DB データベースのメニューオプションが表示されます。このコンテキストメニューの項目を使用して、データベースサーバーの起動や停止、新規データベースインスタンスの作成、および IDE へのデータベースサーバーの登録 (前の手順で紹介) ができます。データベースサーバーを起動するには、次の手順に従います。
「サービス」ウィンドウで「Java DB」ノードを右クリックし、「サーバーを起動」を選択します。「出力」ウィンドウの次の出力は、サーバーが起動したことを示しています。

「Java DB」ノードを右クリックし、「データベースを作成」を選択します。
「Java DB データベースを作成」ダイアログが開きます。
-
「データベース名」テキストフィールドに「contact」と入力します。また、ユーザー名とパスワードを「nbuser」に設定します。「データベースの場所」は、GlassFish からの Java DB のインストール中に設定したデフォルトの場所です。Java DB を個別にインストールした場合、この場所は異なります。「了解」をクリックします。

データベースへの接続
ここまでの手順で、データベースサーバーを起動させ、constant というデータベースインスタンスを IDE に作成することに成功しました。「サービス」ウィンドウからアクセスできる、NetBeans IDE のデータベースエクスプローラには、データベース構造での一般的なタスク用の機能が用意されています。これには、次のものがあります。
- 表の作成、削除、変更
- 表へのデータの生成
- 表形式のデータの表示
- SQL 文とクエリーの実行
contact データベースの操作を始めるには、そのデータベースへの接続を作成する必要があります。contact に接続するには、次の手順に従います。
「サービス」ウィンドウでデータベースエクスプローラを展開し (Ctrl-5)、新しいデータベースを指定します。
データベース接続ノード (jdbc:derby://localhost:1527/car_database[nbuser on NBUSER]) を右クリックし、「接続」を選択します。
接続ノードのアイコンの全体が表示されます (
)。これは接続に成功したことを示します。
表の作成
作成した contact データベースは現在空です。まだ表やデータは含まれていません。NetBeans IDE では、「表を作成」ダイアログを使用するか、SQL 文を入力して SQL エディタから直接実行することで、データベースに表を追加できます。次の両方の方法について学習できます。
「表を作成」ダイアログの使用
「contact」接続ノードを展開します。「表」、「ビュー」、「プロシージャ」の 3 つのサブフォルダがあります。「表」ノードを右クリックし、「表を作成」を選択します。
「表を作成」ダイアログが開きます。
- 「表名」テキストフィールドに「FRIENDS」と入力します。
- 表示された最初の行で、「キー」チェックボックスを選択します。表の主キーを指定します。リレーショナルデータベースにあるすべての表に、主キーを含める必要があります。「キー」チェックボックスを選択すると、「索引」および「一意」チェックボックスも自動的に選択され、「Null」チェックボックスが選択解除されます。これは、主キーを使用してデータベース内の行を一意に識別するためです。デフォルトでは、主キーは表の索引として使用されます。すべての行が識別される必要があるため、主キーに Null 値を含むことはできません。
- 「列名」に「id」と入力します。「データ型」のドロップダウンリストから「INTEGER」を選択します。「列を追加」ボタンをクリックします。
この手順を繰り返し、次の表に示すようにフィールドを指定します。
| [選択] |
[選択] |
|
[選択] |
id |
INTEGER |
0 |
|
|
[選択] |
|
firstName |
VARCHAR |
20 |
|
|
[選択] |
|
lastName |
VARCHAR |
20 |
|
|
[選択] |
|
nickName |
VARCHAR |
30 |
|
|
[選択] |
|
friendSince |
DATE |
0 |
|
|
[選択] |
|
email |
VARCHAR |
60 |
作成中の FRIENDS という表は、連絡先レコードごとに次のデータを保持します。
- 名
- 姓
- ニックネーム
- 知り合った日付
- 電子メールアドレス

「表を作成」ダイアログが上に示す指定と同じになっていることを確認したら、「了解」をクリックします。IDE によってデータベースに FRIENDS 表が生成され、データベースエクスプローラの「表」の下に新しい「FRIENDS」表ノード (
) が表示されていることを確認できます。この表ノードの下に、主キー (
) を先頭に列 (フィールド) が一覧表示されます。
SQL エディタの使用
- データベースエクスプローラで「contact」接続ノードまたはその下にある「表」ノードを右クリックし、「コマンドを実行」を選択します。メインウィンドウ内に SQL エディタが開き、空白のキャンバスが表示されます。
- SQL エディタに次のクエリーを入力します。これは、作成する COLLEAGUES 表の表定義です。
CREATE TABLE "COLLEAGUES" (
"ID" INTEGER not null primary key,
"FIRSTNAME" VARCHAR(30),
"LASTNAME" VARCHAR(30),
"TITLE" VARCHAR(10),
"DEPARTMENT" VARCHAR(20),
"EMAIL" VARCHAR(60)
);
注: SQL エディタで作成した文およびクエリーは、SQL (Structured Query Language) で構文解析されます。SQL は厳密な構文規則に準拠しています。IDE のエディタで作業をするときは、これらの規則を理解しておいてください。SQL 構文はまた、データベース管理システムによって異なることがあります。具体的なガイドラインについては、『Java DB Reference Manual』を参照してください。
エディタ最上部のタスクバーにある「SQL を実行」(
) ボタンをクリックします (Ctrl-Shift-E)。「出力」ウィンドウ (Ctrl-4) に、文の実行に成功したことを示すメッセージが表示されます。

- 変更内容を確認するには、データベースエクスプローラで「contact」接続ノードを右クリックし、「再表示」を選択します。これで、指定したデータベースの現在の状態に合わせて実行時 UI コンポーネントが更新されます。NetBeans IDE で SQL エディタからクエリーを実行するときは、この手順が必要です。「サービス」ウィンドウの「表」の下に「COLLEAGUES」表ノード (
) が新しく表示されます。
表へのデータの追加
contact データベースに 1 つ以上の表を作成したので、表へのデータの生成を開始できます。FRIENDS 表に完全なレコード (行) を追加するには、表スキーマにあるすべてのフィールドに値を供給する文を作成します。SQL エディタを使用して、新しいレコードを追加する簡単な文を作成できます。
- データベースエクスプローラで「表」ノードを右クリックし、「コマンドを実行」を選択します。メインウィンドウで SQL エディタが開き、空白のキャンバスが表示されます。
- SQL エディタに次の文を入力します。
INSERT INTO "NBUSER"."FRIENDS" VALUES (1,'Theodore','Bagwell','T-Bag','2004-12-25','tbag@foxriver.com')
- SQL エディタ内を右クリックし、「文を実行」を選択します。「出力」ウィンドウに、文の実行に成功したことを示すメッセージが表示されます。
-
FRIENDS 表に新しいレコードが追加されたことを確認するには、「サービス」ウィンドウで「FRIENDS」表ノードを右クリックし、「データを表示」を選択します。SQL エディタがふたたびメインウィンドウで開きます。「データを表示」を選択すると、表からすべてのデータを選択する SQL クエリーが SQL エディタの上部区画に自動的に生成されます。文の結果は、SQL エディタの下部区画に表示されます。この場合、FRIENDS 表は下部区画に表示されます。SQL 文から供給されたデータを使用して、新しい行が追加されています。

表の削除
次の手順では、外部 SQL スクリプトを使用して、新しい COLLEAGUES 表を作成します。しかし、前述の「SQL エディタの使用」で COLLEAGUES 表は作成したばかりです。SQL スクリプトによって本当に新しい表が作成されることが明確に分かるよう、ここでは、すでに作成した COLLEAGUES 表を削除します。データベースの表を削除するには、次の手順に従います。
- データベースエクスプローラで表のノードを右クリックし、「削除」を選択します。
- 「オブジェクト削除の確認」ダイアログで「はい」をクリックします。データベースエクスプローラから表がすぐに削除されます。
外部 SQL スクリプトの使用
外部 SQL スクリプトからコマンドを発行するのは、データベースを管理するのに一般的な方法です。ほかの場所で SQL スクリプトをすでに作成している場合、そのスクリプトを NetBeans IDE にインポートし、指定したデータベースに対して実行します。
これを実証するため、colleagues.sql をダウンロードしてコンピュータ上の適切な場所に保存してください。このスクリプトは、COLLEAGUES という新しい表を作成し、その表にデータを生成します。contact データベースでこのスクリプトを実行するには、次の手順に従います。
- IDE のメインメニューから「ファイル」>「ファイルを開く」を選択します。ファイルブラウザで colleagues.sql ファイルを保存した場所に移動し、「開く」をクリックします。SQL エディタで自動的にスクリプトが開きます。
-
エディタの最上部のツールバーにある「接続」ドロップダウンボックスで contact への接続が選択されていることを確認します。

- SQL エディタのタスクバーにある「SQL を実行」(
) ボタンをクリックします。選択したデータベースに対してスクリプトが実行され、「出力」ウィンドウにフィードバックが生成されます。
- 変更内容を確認するには、「サービス」ウィンドウで「contact」接続ノードを右クリックし、「再表示」を選択します。SQL スクリプトからの新しい COLLEAGUES 表が、「サービス」ウィンドウの「contact」の下に表ノードとして表示されます。
- 新しい表に含まれているデータを表示するには、前述したように、表の右クリックメニューから「データを表示」を選択します。このように、表形式のデータと SQL スクリプトに含まれるデータとを比較して、一致しているかどうかを確認することもできます。
異なるデータベースの表の再作成
異なるデータベースにある表を、NetBeans IDE から操作中のデータベースで再作成したい場合、IDE には便利なツールが用意されています。まず、このチュートリアルの最初に説明したものに似た 2 つ目のデータベースが IDE に登録されている必要があります。このチュートリアルでは、NetBeans IDE と一緒に GlassFish アプリケーションサーバーをインストールしたときに、Java DB とともにパッケージ化されていた sample データベースを使用します。この手順は基本的に 2 つの段階に分けて実行されます。まず、選択した表の表定義を「保存」し、そのあと選択したデーベースに表を再作成できます。
- データベースエクスプローラで接続ノードを右クリックし、「接続」(パスワードは app) を選択して、sample データベースに接続します。
-
「表」ノードを展開します。「CUSTOMER」表ノードを右クリックし、「構造を保存」を選択します。

- 開いた「表を保存」ダイアログで、作成される保存 (grab) ファイルを配置する場所を指定します。「保存」をクリックします。保存ファイルには、選択した表の表定義が記録されます。
- データベースエクスプローラで、contact データベース接続の下にある「表」ノードを右クリックし、「表を再作成」を選択します。
開いた「表を再作成」ダイアログで、CUSTOMER 保存ファイルを保存した場所に移動し、「開く」をクリックします。「表に名前を付ける」ダイアログが開きます。

-
ここで表の名前を変更したり、表定義を編集したりできます。それらを行わない場合、「了解」をクリックすると、contact データベースにすぐに表が作成されます。「contact」接続ノードの下に「CUSTOMER」表ノードが新しく表示されます。

関連項目
これで、「Java DB (Derby) データベースの操作」チュートリアルは終わりです。このチュートリアルでは、NetBeans IDE で Java DB データベースへの接続を設定する方法を紹介しました。そして、IDE の「サービス」ウィンドウからデータベースエクスプローラを使用して、表を作成、表示、変更、および削除する方法を紹介しました。SQL エディタを操作して表にデータを追加する方法や、ほかのデータベースの定義を使用して表を再作成する IDE の機能の使用方法も示しました。
関連するチュートリアルおよびさらに高度なチュートリアルについては、次のリソースを参照してください。