// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= MySQLデータベースへの接続
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: MySQLデータベースへの接続 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, MySQLデータベースへの接続

このドキュメントでは、NetBeans IDEからMySQLデータベースへの接続を設定する方法を紹介します。接続すると、IDEのデータベース・エクスプローラでMySQLを操作できるようになり、新しいデータベースや表を作成したり、表にデータを入力したり、データベースの構造と内容に対してSQL問合せを実行したりすることができます。このチュートリアルは、データベース管理に関する基礎知識があり、NetBeans IDEでのMySQLの操作にその知識を活かすことを考えている初心者向けに作成されています。

link:http://www.mysql.com/[+MySQL+]は、その速さ、柔軟性および信頼性により、Webアプリケーションで一般的に利用されているポピュラなオープン・ソース・リレーショナル・データベース管理システム(RDBMS)です。MySQLは、データベース内のデータへのアクセスおよび処理にSQL (_Structured Query Language_)を使用しています。

*予想される所要時間: _30_分*


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

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

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2、7.3、7.4、8.0、Java 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit (JDK)+] |バージョン7または8 

|MySQLデータベース・サーバー |link:http://dev.mysql.com/downloads/mysql/[+バージョン5.x+] 
|===

NOTE:  このチュートリアルでは、MySQL RDBMSがコンピュータにすでにインストールされていて、構成されていることを想定しています。初めてインストールする場合は、公式なlink:http://dev.mysql.com/doc/refman/5.0/en/installing-cs.html[+MySQLのドキュメント+]を参照してください。link:install-and-configure-mysql-server.html[+Windowsオペレーティング・システムでのMySQLデータベース・サーバーの設定+]を参照することもできます。


== MySQLサーバー・プロパティの構成

NetBeans IDEには、MySQL RDBMS用のサポートがバンドルされています。NetBeans IDEでMySQLデータベース・サーバーにアクセスできるようにする前に、MySQLサーバーのプロパティを構成します。

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

image::images/mysql-props1.png[]


. サーバー・ホスト名とポートが正しいことを確認します。

IDEによって、デフォルトのサーバー・ホスト名に「`localhost`」が入力され、デフォルトのサーバー・ポート番号に「`3306`」が入力されます。


. 管理者ユーザー名を入力します(表示されない場合)。

NOTE: データベースを作成したり除去するには管理者アクセスが必要です。


. 管理者のパスワードを入力します。デフォルトでは空白に設定されています。

NOTE: 空白のパスワードも有効です。


. ダイアログ・ボックスの最上部にある「管理プロパティ」タブをクリックします。

「管理プロパティ」タブが表示され、MySQLサーバーを管理するための情報を入力できます。

. 「管理ツールのパスまたはURL」フィールドにMySQL管理ツール、PhpMyAdmin、またはその他のWebベース管理ツールなどのMySQL管理アプリケーションの場所を入力するか、参照して選択します。

NOTE: `mysqladmin`は、MySQLのインストール・ディレクトリの`bin`フォルダにあるMySQL管理ツールです。これはコマンド行ツールであり、IDEでの使用には適していません。

管理ツールに引数を付ける場合は、「引数」フィールドに引数を入力します。

.  「起動コマンドのパス」には、MySQL起動コマンドの場所を入力するか、参照して選択します。起動コマンドを探すには、MySQLインストール・ディレクトリの`bin`フォルダにある`mysqld`を探します。

NOTE:  UnixおよびNetWare用の推奨バイナリは`mysql_safe`です。MySQLがAMPインストールの一部としてインストールされた場合、起動コマンドも異なる場合があります。

起動コマンドに引数を付ける場合は、「引数」フィールドに引数を入力します。

. 「停止コマンドのパス」フィールドには、MySQL停止コマンドの場所を入力するか、参照して選択します。これは通常、MySQLインストール・ディレクトリの`bin`フォルダにある`mysqladmin`のパスです。コマンドが`mysqladmin`の場合、「引数」フィールドに「`-u root stop`」と入力し、`root`にサーバーを停止する権限を許可します。
.  終了すると、「管理プロパティ」タブは次の図のようになります。構成に問題がなければ、「OK」をクリックします。

image::images/mysql-props2.png[]


== MySQLサーバーの起動

MySQLデータベース・サーバーに接続できるようになる前に、まずMySQLデータベース・サーバーがマシンで稼働していることを確認します。データベース・サーバーが接続していない場合は、「サービス」ウィンドウのMySQLサーバー・ノードのユーザー名の横に*(切断)*と表示され、ノードを展開できません。

データベース・サーバーに接続するには、MySQLデータベース・サーバーがマシンで稼働していることを確認し、「サービス」ウィンドウで「データベース」→MySQLサーバー・ノードを右クリックし、「接続」を選択します。サーバーに接続するためのパスワードの入力を求められることがあります。

image::images/services-running.png[]

サーバーが接続されている場合は、MySQLサーバー・ノードを展開し、使用可能なすべてのMySQLデータベースを表示できます。


== データベース・インスタンスの作成と接続

データベースと対話する一般的な方法は、SQLエディタ経由で行う方法です。NetBeans IDEには、このためのSQLエディタが組み込まれています。一般にSQLエディタは、接続ノード(または接続ノードの子のノード)の右クリック・メニューにある「コマンドの実行」オプションを使用してアクセスできます。MySQLサーバーに接続しているので、SQLエディタを使用して新しいデータベース・インスタンスを作成できます。このチュートリアルでは、 ``MyNewDatabase`` というインスタンスを作成します。

1. IDEの「サービス」ウィンドウで「MySQLサーバー」ノードを右クリックし、「データベースを作成」を選択します。

「MySQLデータベースの作成」ダイアログ・ボックスが開きます。


. 「MySQLデータベースの作成」ダイアログ・ボックスで、新しいデータベースの名前を入力します。このチュートリアル用に`MyNewDatabase`を使用します。この時点では、チェックボックスは選択解除したままにしておきます。 image:images/create-db-dbx.png[]

NOTE: 特定のユーザーにフル・アクセスを許可することもできます。デフォルトでは、管理ユーザーのみが、特定のコマンドを実行するための権限を持っています。ドロップダウン・リストで、指定したユーザーにそれらの権限を割り当てることができます。


. 「OK」をクリックします。

「サービス」ウィンドウの「MySQLサーバー」ノードの下に新しいデータベースが表示されます。


. 新規データベース・ノードを右クリックし、ポップアップ・メニューで「接続」を選択してデータベースへの接続を開きます。

開かれている状態のデータベース接続は、「サービス」ウィンドウの完全接続ノード(image:images/connection-node-icon.png[])によって表されます。


== データベース表の作成

 ``MyNewDatabase`` に接続しているので、表の作成、表へのデータの生成、表に保持されているデータの変更方法の学習を開始できます。これによって、NetBeans IDEのSQLファイル用のサポートと同様に、データベース・エクスプローラが提供する機能を詳しく見ることができます。

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

1. <<usingSQLEditor,SQLエディタの使用>>
2. <<usingCreateTable,「表を作成」ダイアログの使用>>


=== SQLエディタの使用

1. データベース・エクスプローラで ``MyNewDatabase`` 接続ノード(image:images/connection-node-icon.png[])を展開すると、「表」、「ビュー」および「プロシージャ」の3つのサブフォルダがあります。
2. 「表」フォルダを右クリックし、「コマンドの実行」を選択します。メイン・ウィンドウ内にSQLエディタが開き、空白のキャンバスが表示されます。
3. SQLエディタで次の問合せを入力します。これは、作成する ``Counselor`` 表の表定義です。

[source,sql]
----
CREATE TABLE Counselor (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    firstName VARCHAR (50),
    nickName VARCHAR (50),
    lastName VARCHAR (50),
    telephone VARCHAR (25),
    email VARCHAR (50),
    memberSince DATE DEFAULT '0000-00-00',
    PRIMARY KEY (id)
            );
----

NOTE: SQLエディタで作成した文および問合せは、SQL (Structured Query Language)で構文解析されます。SQLは厳密な構文ルールに準拠しています。IDEのエディタで作業をするときは、これらのルールを理解しておいてください。問合せを実行すると、SQLエンジンからのフィード・バックが「出力」ウィンドウに生成され、実行に成功したかどうかが示されます。


.  問合せを実行するには、最上部のタスクバーにある「SQLの実行」(image:images/run-sql-button.png[])ボタン([Ctrl]-[Shift]-[E])、またはSQLエディタ内を右クリックして「文の実行」を選択します。IDEによって、データベースに ``Counselor`` 表が生成され、「出力」ウィンドウに次のようなメッセージが表示されます。

image::images/create-counselor-query.png[]


.  変更内容を確認するには、データベース・エクスプローラで「表」ノードを右クリックし、「リフレッシュ」を選択します。「リフレッシュ」オプションは、指定したデータベースの現在のステータスにあわせてデータベース・エクスプローラのUIコンポーネントを更新します。データベース・エクスプローラの「表」の下に、新しい ``Counselor`` 表ノード(image:images/table-node.png[])が表示されていることに注意してください。表ノードを展開すると、主キー(image:images/primary-key-icon.png[])で開始する作成済の各列(フィールド)が表示されます。

image::images/counselor-table.png[]


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

1. データベース・エクスプローラで「表」ノードを右クリックし、「表を作成」を選択します。「表を作成」ダイアログが開きます。
2. 「表名」テキスト・フィールドに「 ``Subject`` 」と入力します。
3. 「列を追加」をクリックします。
4. 列の「名前」に「 ``id`` 」と入力します。「型」ドロップダウン・リストからデータ型として「 ``SMALLINT`` 」を選択します。「OK」をクリックします。

image::images/add-column-dialog.png[]


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

|===
|キー |索引 |Null |一意 |列名 |データ型 |サイズ 

|[選択] |[選択] |[選択] |id |SMALLINT |0 

|[選択] |name |VARCHAR |50 

|[選択] |description |VARCHAR |500 

|[選択] |FK_counselorID |SMALLINT |0 
|===

次の各レコードのデータを保持する ``Subject`` という表を作成しています。

* *名前: *Subjectの名前
* *説明: *Subjectの説明
* *カウンセラID: *Counselor表のIDに対応するカウンセラID

image::images/create-table-subject.png[]

「表を作成」ダイアログのフィールドが前述の内容と一致していることを確認し、「OK」をクリックします。IDEによって、データベースに ``Subject`` 表が生成され、データベース・エクスプローラの「表」ノードの直下に新しい ``Subject`` 表ノード(image:images/table-node.png[])が表示されていることを確認できます。


== 表データの操作

表データの操作には、NetBeans IDEのSQLエディタを利用できます。データベースに対してSQL問合せを実行することによって、データベース構造内で保持されているデータを追加、変更および削除できます。 ``Counselor`` 表に新規レコード(行)を追加するには:

1. データベース・エクスプローラで「表」フォルダから「コマンドの実行」を選択します。メイン・ウィンドウ内にSQLエディタが開き、空白のキャンバスが表示されます。
2. SQLエディタで次の問合せを入力します。

[source,sql]
----
INSERT INTO Counselor
VALUES (1, 'Ricky', '"The Dragon"', 'Steamboat','334 612-5678', 'r_steamboat@ifpwafcad.com', '1996-01-01')
----

. 問合せを実行するには、SQLエディタ内を右クリックし、「文を実行」を選択します。「出力」ウィンドウで、問合せの実行に成功したことを示すメッセージを確認できます。
.  ``Counselor`` 表に新しいレコードが追加されたことを確認するには、データベース・エクスプローラで「 ``Counselor`` 」表ノードを右クリックし、「データを表示」を選択します。メイン・ウィンドウに新しいSQLエディタ・ペインが開きます。「データを表示」を選択すると、表からすべてのデータを選択する問合せがSQLエディタの上部領域に自動的に生成されます。下部領域の表ビューに文の実行結果が表示されます。この例では、 ``Counselor`` 表が表示されます。SQL問合せから提供されたデータを使用して、新しい行が追加されています。

image::images/sql-results.png[]


== SQLスクリプトの実行

NetBeans IDEで表データを管理するもう1つの方法として、外部SQLスクリプトを直接IDEで実行する方法があります。他の場所でSQLスクリプトを作成していた場合は、そのスクリプトをNetBeans IDEで開き、SQLエディタで実行できます。

実証のため、link:https://netbeans.org/project_downloads/samples/Samples/Java%20Web/ifpwafcad.sql[+ifpwafcad.sql+]をダウンロードし、コンピュータ上の場所に保存してください。このスクリプトは、前に作成した表( ``Counselor`` と ``Subject`` )に似た2つの表を作成し、それらの表にすぐにデータを生成します。

このスクリプトは、同じ表がすでに存在する場合はそれらの表を上書きするため、スクリプトを実行したときに新しい表が作成されることが明確になるように、ここで ``Counselor`` 表と ``Subject`` 表を削除します。表を削除するには:

1. データベース・エクスプローラで「 ``Counselor`` 」および「 ``Subject`` 」表ノードを右クリックし、「削除」を選択します。
2. 「オブジェクト削除の確認」ダイアログ・ボックスで「はい」をクリックします。ダイアログ・ボックスに、削除される表が一覧表示されます。

「オブジェクト削除の確認」ダイアログ・ボックスで「はい」をクリックすると、表ノードがデータベース・エクスプローラから自動的に除去されます。

 ``MyNewDatabase`` に対してSQLスクリプトを実行するには:

1. IDEのメイン・メニューから「ファイル」>「ファイルを開く」を選択します。ファイル・ブラウザで、 ``ifpwafcad.sql`` を以前に保存した場所に移動し、「開く」をクリックします。SQLエディタで自動的にスクリプトが開きます。
2. エディタの最上部のツールバーにある「接続」ドロップダウン・ボックスで ``MyNewDatabase`` への接続が選択されていることを確認します。

image::images/connection-drop-down.png[]


. SQLエディタのタスク・バーにある「SQLの実行」(image:images/run-sql-button.png[])ボタンをクリックします。選択したデータベースに対してスクリプトが実行され、「出力」ウィンドウにフィード・バックが生成されます。
. 変更内容を確認するには、「実行時」ウィンドウで「 ``MyNewDatabase`` 」接続ノードを右クリックし、「リフレッシュ」を選択します。「リフレッシュ」オプションは、指定したデータベースの現在のステータスにあわせてデータベース・エクスプローラのUIコンポーネントを更新します。SQLスクリプトからの2つの新しい表が、データベース・エクスプローラの ``MyNewDatabase`` の下に表ノードとして表示されます。
. 選択されている表ノードの右クリック・メニューから「データを表示」を選択し、新しい表に含まれているデータを表示します。このようにして、表形式のデータとSQLスクリプトに含まれるデータを比較して、両者が同じかどうかを確認できます。
link:/about/contact_form.html?to=3&subject=Feedback:%20Connecting%20to%20a%20MySQL%20Database[+ご意見をお寄せください+]



== 関連項目

これで、MySQLデータベースへの接続のチュートリアルは終わりです。このドキュメントでは、コンピュータにMySQLを構成し、NetBeans IDEからそのデータベース・サーバーへの接続を設定する方法を紹介しました。また、IDEのデータベース・エクスプローラでMySQLを操作して、新しいデータベース・インスタンスや表の作成、表へのデータの生成、およびSQL問合せの実行を行う方法も説明しました。

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

* link:../../docs/web/mysql-webapp.html[+MySQLデータベースを使用した単純なWebアプリケーションの作成+]。作成したMySQLデータベースを使用して、IDEで単純な2層Webアプリケーションを作成する方法を紹介するフォローアップ・チュートリアルです。
