Java DB (Derby)データベースの操作

This tutorial needs a review. You can open a JIRA issue, or edit it in GitHub following these contribution guidelines.

このドキュメントでは、NetBeans IDEでJava DBデータベースへの接続を設定する方法を紹介します。いったん接続が作成されると、IDEでデータベースの操作を開始することができ、表の作成、表へのデータの生成、およびSQL文や問合せの実行が可能になります。

Java DBデータベースは、SunがサポートするApache Derbyのディストリビューションです。Java DBは、完全なトランザクション型で、規格に準拠し、保護されたデータベース・サーバーです。すべてJavaで記述されており、SQL、JDBC APIおよびJava EEテクノロジを完全にサポートしています。Java DBデータベースはGlassFishアプリケーション・サーバーとともにパッケージ化されており、JDK 6にも含まれています。Java DBデータベースの詳細は、公式ドキュメントをお読みください。

netbeans stamp 80 74 73
Figure 1. このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン

NetBeans IDE

7.2、7.3、7.4、8.0、Java EE

Java Development Kit (JDK)

バージョン7または8

Java DB

バージョン10.4.x、10.5.x

注意:

  • JDK 7またはJDK 8をインストールすると、Java DBがインストールされます(Mac OS Xの場合を除く)。Mac OS Xを使用する場合、Java DBを手動でダウンロードしてインストールするか、NetBeans IDEインストーラのJava EEバージョンによってインストールされるJava DBを使用できます。

データベースの構成

NetBeans IDEのインストールでGlassFish Serverを登録した場合、Java DBはすでに登録されています。このため、サーバーの起動とデータベースの作成に進むことができます。

GlassFishサーバーを別途ダウンロードしていて、NetBeans IDEへの登録方法が不明な場合は、IDEのヘルプ目次(F1)にある*GlassFish Serverインスタンスの登録*を参照してください。

Java DBを単独でダウンロードした場合は、次の手順を実行します。

  1. 自己抽出型のファイルを実行します。このファイルと同じ場所に「javadb」というフォルダが作成されます。Java DBをダウンロードし、抽出先とは異なる場所にデータベース・サーバーを置く場合は、ここで場所を変更します。

  2. システム上で、データベース・サーバーの個々のインスタンスのホーム・ディレクトリとして使用する新しいディレクトリを作成します。たとえば、このフォルダをJava DBルート・ディレクトリ(javadb)などのその他の場所に作成できます。

次に進む前に、Java DBのルート・ディレクトリにあるコンポーネントについて理解しておく必要があります。

  • demo サブディレクトリには、すべてのデモ・プログラムが含まれています。

  • bin サブディレクトリには、ユーティリティの実行や環境設定用のスクリプトが含まれています。

  • javadoc サブディレクトリには、ソース・コードのコメントから生成されたAPIのドキュメントが含まれています。

  • docs サブディレクトリには、Java DBのドキュメントが含まれています。

  • lib サブディレクトリには、Java DB jarファイルが含まれています。

NetBeans IDEへのデータベースの登録

データベースが構成されたので、次の手順を実行して、Java DBをIDEに登録します。

  1. 「サービス」ウィンドウで、「Java DBデータベース」ノードを右クリックし、「プロパティ」を選択して、Java DB設定ダイアログ・ボックスを開きます。

  2. 「Java DBインストール」テキスト・フィールドに、前述の手順で指定したJava DBルート・ディレクトリ(javadb)へのパスを入力します。

  3. 「データベースの場所」で、場所がすでに指定されている場合、デフォルトの場所を使用します。「OK」をクリックします。

たとえば、デフォルトの場所は、Windowsマシンでは C:\Documents and Settings\username\.netbeans-derby などになります。

javadb props
Figure 2. Java DBサーバーとデータベースのデフォルトの設定の例

注意:「データベースの場所」フィールドが空の場合は、データベースが格納されているディレクトリのパスを設定する必要があります。データベース用のディレクトリが存在しない場合は、作成する必要があります。

サーバーの起動とデータベースの作成

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

  1. 「サービス」ウィンドウで「Java DB」ノードを右クリックし、「サーバーを起動」を選択します。「出力」ウィンドウの次の出力は、サーバーが起動したことを示しています。

output start db
  1. 「Java DB」ノードを右クリックし、「データベースを作成」を選択して、「Java DBデータベースを作成」ダイアログを開きます。

  2. 「データベース名」に「 contact 」と入力します。

  3. 「ユーザー名」および「パスワード」に「 nbuser 」と入力します。「OK」をクリックします。

javadb createdb

注意:「データベースの場所」は、GlassFishからのJava DBのインストール中に設定したデフォルトの場所です。Java DBを別途インストールした場合は、この場所が異なることがあります。

データベースの作成後、「サービス」ウィンドウで「データベース」ノードを展開すると、IDEによってデータベース接続が作成されて、そのデータベースが「Java DB」ノードの下に追加されたことを確認できます。

データベースへの接続

ここまでで、データベース・サーバーを起動させ、 contact というデータベース・インスタンスをIDEに作成することに成功しました。IDEの「サービス」ウィンドウで、データベース構造に対して次の一般的なタスクを実行できます。

  • 表の作成、削除、変更

  • 表へのデータの生成

  • 表形式のデータの表示

  • SQL文と問合せの実行

    ``contact`` データベースの操作を始めるには、そのデータベースへの接続を作成する必要があります。 ``contact`` データベースに接続するには:
    1. 「サービス」ウィンドウで「データベース」ノードを展開し、新しいデータベース・ノードとデータベース接続ノードを検索します。

データベース接続ノード(connection node icon)は、「データベース」ノードの下に表示されます。データベースの名前は、「Java DB」ノードの下に表示されます。

services window

*注意:*デフォルトのデータベース・スキーマである`sample [app on APP]`データベース接続を表示することもできます。

  1. *contact*データベース接続ノード( jdbc:derby://localhost:1527/contact [nbuser on NBUSER] )を右クリックし、「接続」を選択します。

接続ノード・アイコン全体(connection node icon)が表示され、これは接続が成功したことを示します。

  1. データベース接続ノード( jdbc:derby://localhost:1527/contact [nbuser on NBUSER] )を右クリックし、「名前変更」を選択して、データベースのわかりやすい表示名を作成します。テキスト・フィールドに「 Contact DB 」と入力し、「OK」をクリックします。

表の作成

作成した contact データベースは現在空です。まだ表やデータは含まれていません。NetBeans IDEでは、「表を作成」ダイアログを使用するか、SQL文を入力してSQLエディタから直接実行することで、データベースに表を追加できます。次の両方の方法について学習できます。

「表を作成」ダイアログの使用

  1. Contact DB 接続ノードを展開すると、複数のスキーマ・サブノードがあることがわかります。appスキーマは、このチュートリアルに適用する唯一のスキーマです。「APP」ノードを右クリックし、「デフォルトのスキーマとして設定」を選択します。

  2. 「APP」ノードを展開します。「表」、「ビュー」、「プロシージャ」の3つのサブフォルダがあります。「表」ノードを右クリックして「表を作成」を選択し、「表を作成」ダイアログ・ボックスを開きます。

  3. 「表名」テキスト・フィールドに「 FRIENDS 」と入力します。

  4. 「列を追加」をクリックします。「列を追加」ダイアログ・ボックスが表示されます。

  5. 「列名」に「 id 」と入力します。「データ型」のドロップダウン・リストから「 INTEGER 」を選択します。

  6. 「制約」で「主キー」チェックボックスを選択して、この列が表の主キーであることを指定します。リレーショナル・データベースにあるすべての表に、主キーを含める必要があります。「主キー」チェックボックスを選択すると、「索引」および「一意」チェックボックスが自動的に選択され、「Null」チェックボックスが選択解除されます。これは、主キーを使用してデータベース内の行を一意に識別するためです。デフォルトでは、主キーは表の索引として使用されます。すべての行が識別される必要があるため、主キーに Null 値を含むことはできません。

add column
  1. この手順を繰り返し、次の表に示すようにフィールドを指定します。

キー

索引

Null

一意

列名

データ型

サイズ

[選択]

[選択]

[選択]

id

INTEGER

0

[選択]

firstName

VARCHAR

20

[選択]

lastName

VARCHAR

20

[選択]

nickName

VARCHAR

30

[選択]

friendSince

DATE

作成中の FRIENDS という表は、連絡先レコードごとに次のデータを保持します。

  • ニックネーム

  • 知り合った日付

  • 電子メール・アドレス

create table friends
  1. 「表を作成」ダイアログが上に示す指定と同じになっていることを確認したら、「OK」をクリックします。IDEによって、データベースに FRIENDS 表が生成されて、「表」ノードの下に新しい FRIENDS 表ノード(table node)の表示を確認できます。表ノードの下に、主キー(primary key icon)で開始する各列(各フィールド)が一覧表示されます。

friends table

SQLエディタの使用

  1. 「サービス」ウィンドウで「 Contact DB 」接続ノードまたはその下にある「表」ノードを右クリックし、「コマンドの実行」を選択します。メイン・ウィンドウ内にSQLエディタが開き、空白のキャンバスが表示されます。

  2. 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を参照してください。

  1. エディタ([Ctrl]-[Shift]-[E])の上部にあるタスク・バーの「SQLの実行」(run sql button)ボタンをクリックし、問合せを実行します。「出力」ウィンドウ([Ctrl]-[4])に、文の実行に成功したことを示すメッセージが表示されます。

run query
  1. 変更内容を確認するには、「サービス」ウィンドウで「 Contact DB 」接続ノードを右クリックし、「リフレッシュ」を選択します。これで、指定したデータベースの現在のステータスにあわせて実行時UIコンポーネントが更新されます。NetBeans IDEでSQLエディタから問合せを実行するときは、このステップが必要です。「サービス」ウィンドウの「表」の下に、新しいCOLLEAGUES表ノード(table node)が表示されていることに注意してください。

表へのデータの追加

``contact`` データベースに1つ以上の表を作成したので、表へのデータの生成を開始できます。表にレコードを追加するには、いくつかの方法があります。

これらのすべての使用方法を学習し、 FRIENDS 表にデータを生成するには、次の各項を参照してください。

SQL文の実行

  1. 「サービス」ウィンドウの Contact DB ノードの下にある「表」を展開し、 FRIENDS 表を右クリックして「コマンドの実行」を選択し、「SQLエディタ」ウィンドウを開きます。

  2. SQLエディタに次の文を入力します。

INSERT INTO APP.FRIENDS VALUES (1,'Theodore','Bagwell','T-Bag','2004-12-25','tbag@foxriver.com')

入力中はSQLエディタのコード補完を使用できます。

  1. SQLエディタ内を右クリックし、「文を実行」を選択します。「出力」ウィンドウに、文の実行に成功したことを示すメッセージが表示されます。

  2. FRIENDS 表に新しいレコードが追加されたことを確認するには、「サービス」ウィンドウで「 FRIENDS 」表ノードを右クリックし、「データを表示」を選択します。

「データを表示」を選択すると、表からすべてのデータを選択する問合せがSQLエディタの上部ペインに自動的に生成されます。文の結果は、SQLエディタの下部ペインに表示されます。この場合、 FRIENDS 表は下部ペインに表示されます。SQL文から供給されたデータを使用して、新しい行が追加されています。

new record

SQLエディタの使用

  1. FRIENDS 」表ノードを右クリックして、「データを表示」を選択します(前の項の最後のステップで実行しなかった場合)。

  2. 「レコードを挿入( Alt+I )」ボタンをクリックして、行を追加します。 「レコードを挿入」ダイアログ・ボックスが表示されます。

  1. 各セルでクリックして、レコードを入力します。Dateデータ型のセルでは、カレンダから日付を選択できます。完了したら、「OK」をクリックします。

insert records

SQLエディタでは、行のヘッダーをクリックして結果をソートしたり、既存のレコードを変更および削除したり、(ポップアップ・メニューの「SQLスクリプトを表示」コマンドで)エディタで実行しているアクションのSQLスクリプトを表示したりできます。

表の削除

次の手順では、外部SQLスクリプトを使用して、新しい COLLEAGUES 表を作成します。しかし、 COLLEAGUES 表は前述のSQLエディタの使用の項で作成したばかりです。SQLスクリプトによって本当に新しい表が作成されることが明確にわかるように、ここでは、すでに作成した COLLEAGUES 表を削除します。データベース表を削除するには:

  1. 「サービス」ウィンドウのデータベース接続ノードの下にある「表」ノードを展開します。

  2. 削除する表を右クリックして「削除」を選択します。

外部SQLスクリプトの使用

外部SQLスクリプトからコマンドを発行するのは、データベースを管理するのに一般的な方法です。他の場所でSQLスクリプトをすでに作成している場合、そのスクリプトをNetBeans IDEにインポートし、指定したデータベースに対して実行します。

この課題では、スクリプトで COLLEAGUES という名前の新しい表を作成してその表にデータを移入します。 contact データベースに対してこのスクリプトを実行するには、次の手順を実行します。

  1. ローカル・システムにcolleagues.sqlをダウンロードします。

  2. IDEのメイン・メニューから「ファイル」>「ファイルを開く」を選択します。ファイル・ブラウザで colleagues.sql ファイルを保存した場所に移動し、「開く」をクリックします。SQLエディタで自動的にスクリプトが開きます。

または、colleagues.sqlの内容をコピーし、SQLエディタを開いてその中にファイルの内容を貼り付けます。

  1. エディタの最上部のツールバーにある「接続」ドロップダウン・ボックスで Contact DB への接続が選択されていることを確認します。

conn drop down
  1. SQLエディタのタスク・バーにある「SQLの実行」(run sql button)ボタンをクリックします。選択したデータベースに対してスクリプトが実行され、「出力」ウィンドウにフィード・バックが生成されます。

  2. 変更内容を確認するには、「サービス」ウィンドウで「 Contact DB 」接続ノードを右クリックし、「リフレッシュ」を選択します。SQLスクリプトからの新しい COLLEAGUES 表が、「サービス」ウィンドウの「 contact 」の下に表ノードとして表示されます。

  3. 新しい表に含まれているデータを表示するには、 COLLEAGUES 表を右クリックして「データを表示」を選択します。このように、表形式のデータとSQLスクリプトに含まれるデータとを比較して、一致しているかどうかを確認することもできます。

異なるデータベースの表の再作成

異なるデータベースにある表を、NetBeans IDEから操作中のデータベースで再作成したい場合、IDEには便利なツールが用意されています。まず、このチュートリアルの最初に説明したものに似た2つ目のデータベースがIDEに登録されている必要があります。このチュートリアルの目的で、Java DBにパッケージされている sample データベースを使用します。このプロセスは基本的に2つの段階に分けて実行されます。まず、選択した表の表定義を「保存」し、その後選択したデータベースに表を再作成できます。

  1. 「サービス」ウィンドウの「データベース」ノードの下にある接続ノードを右クリックして、「接続」を選択し(ユーザー名とパスワードは app )、 sample データベースに接続します。

  2. sample データベース接続の下にある「表」ノードを展開し、 CUSTOMER 表ノードを右クリックして「構造を保存」を選択します。

grab structure
  1. 開いた「表を保存」ダイアログで、作成される保存(grab)ファイルを保存するコンピュータの場所を指定します。「保存」をクリックします。

保存ファイルには、選択した表の表定義が記録されます。

  1. Contact DB データベース接続の下にある「APP」スキーマ・ノードを展開し、「表」ノードを右クリックして「表を再作成」を選択し、「表を再作成」ダイアログ・ボックスを開きます。

  2. 「表を再作成」ダイアログ・ボックスで、 CUSTOMER 保存ファイルを保存した場所に移動して「開く」をクリックし、「表に名前を付ける」ダイアログ・ボックスを開きます。

recreate table
  1. ここで表の名前を変更したり、表定義を編集したりできます。そうしない場合、「OK」をクリックすると、 contact データベースにすぐに表が作成されます。「 Contact DB 」接続ノードの下に「 CUSTOMER 」表ノードが新しく表示されます。

new customer node

新しい CUSTOMER 表にデータを表示するとデータベースにレコードが表示されませんが、表の構造は保存した表と同一です。

関連項目

これで、Java DB (Derby)データベースの操作のチュートリアルは終わりです。このチュートリアルでは、NetBeans IDEでJava DBデータベースへの接続を設定する方法を紹介しました。次に、IDEの「サービス」ウィンドウの表を作成、表示、変更および削除する方法を紹介しました。SQLエディタを操作して表にデータを追加する方法や、他のデータベースの定義を使用して表を再作成するIDEの機能の使用方法も示しました。

関連するチュートリアルおよびさらに高度なチュートリアルについては、次のリソースを参照してください。