JDBC(MySQL)編

◆JDBCとは?
JDBCとはJavaからデータベースにアクセスするためのAPIです。JDBCのAPIを使用してJavaのプログラムからデータベースにSQL文を発行してデータベースのデータの操作を行うことができます。
◆データベースとは?
データベースとはデータの集まりのことです。たくさんのデータを整理、分類して管理することによってユーザーが必要なデータを簡単に検索して取り出したり、またデータを追加、更新したりできるようになります。
◆MySQLとは?
MySQLは無料で使えるオープンソースのデータベースです。使いやすく軽快に動作することが特徴のRDBMS(リレーショナルデータベース管理システム)です。
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.0
データベース MySQL (バージョン3.23.49)
◆Java実行環境の構築
アプリケーション編を参考にしてJava実行環境を構築してください。
◆MySQLのダウンロードとインストール
MySQLはwww.mysql.comからダウンロードできます。ここではバージョン3.23.49のWindows版をダウンロードしました。
MySQLのダウンロード → http://www.mysql.com/downloads/
ダウンロードしたファイルを解凍したフォルダに入っているSETUP.EXEを実行することでインストールできます。
◆環境変数PATHの設定
環境変数PATHの値の一番最後にセミコロンを入れてC:\mysql\binを追加してください。環境変数の設定方法はアプリケーション編を参考にしてください。これでMySQLのコマンドが使えるようになります。
◆MySQLの起動
MySQLの起動はmysqldコマンドでできます。–default-character-set=sjisを引数で指定して使用する文字セットを設定します。
コマンドプロンプト
C:\>mysqld –default-character-set=sjis
◆データベースの表示
存在するデータベースをみるにはmysqlshowコマンドでできます。最初から「mysql」と「test」という名前のデータベースが用意されています。新しいコマンドプロンプトを立ち上げてmysqlshowコマンドを実行してみましょう。
コマンドプロンプト
C:\>mysqlshow
+———–+
| Databases |
+———–+
| mysql |
| test |
+———–+
C:\>

◆データベースの作成
自分のデータベースを作ってみましょう。データベースの作成はmysqladminコマンドでできます。ここでは「hellodb」という名前のデータベースを作ることにします。
コマンドプロンプト
C:\>mysqladmin -u root create hellodb
C:\>

作成されたかどうか見てみましょう。
コマンドプロンプト
C:\>mysqlshow
+———–+
| Databases |
+———–+
| hellodb |
| mysql |
| test |
+———–+
C:\>

作成されていますね。

◆対話型MySQLクライアントの起動
MySQLにはmysqlというコマンドで起動できる対話型ツールが利用できます。これを使用することによってデータベースに接続してSQL文を実行することができます。それでは実際にhellodbデータベースに接続してみましょう。
コマンドプロンプト
C:\>mysql -u root hellodb
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 23 to server version: 3.23.49-nt
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>

これでデータベースに接続できました。

◆テーブルの作成
SQL文を実行してテーブルを作成してみることにします。以下がここで実行するSQL文です。
テーブルを作成するSQL文
CREATE TABLE HELLO_WORLD_TABLE (
NO INTEGER NOT NULL,
LANGUAGE VARCHAR(50),
MESSAGE VARCHAR(100),
PRIMARY KEY(NO)
);
それではSQL文を入力してみましょう。(上のSQL文をコピーしてコマンドラインに貼り付けてもOKです)
コマンドプロンプト
mysql> CREATE TABLE HELLO_WORLD_TABLE (
-> NO INTEGER NOT NULL,
-> LANGUAGE VARCHAR(50),
-> MESSAGE VARCHAR(100),
-> PRIMARY KEY(NO)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql>

これでテーブルが作成されました。ほんとに作成されているかテーブル一覧を表示していましょう。テーブル一覧を表示するにはshow tablesというコマンドでできます。
コマンドプロンプト
mysql> show tables;
+——————-+
| Tables_in_hellodb |
+——————-+
| hello_world_table |
+——————-+
1 row in set (0.00 sec)
mysql>

できていますね。

◆テーブルにデータの追加
それではテーブルにデータを作ってみましょう。ここで作るデータは以下のようなデータです。
NO LANGUAGE MESSAGE
1 日本語 こんにちわ 世界
2 英語 Hello World
上記のデータを追加するには以下のような2つのSQL文を実行します。
テーブルにデータを追加するSQL文
INSERT INTO HELLO_WORLD_TABLE
VALUES ( 1 , ‘日本語’ , ‘こんにちわ 世界’);

INSERT INTO HELLO_WORLD_TABLE
VALUES ( 2 , ‘英語’ , ‘Hello World’);
SQL文を入力して実行してみましょう。(上のSQL文をコピーしてコマンドラインに貼り付けてもOKです)
コマンドプロンプト
mysql> INSERT INTO HELLO_WORLD_TABLE
-> VALUES ( 1 , ‘日本語’ , ‘こんにちわ 世界’);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO HELLO_WORLD_TABLE
-> VALUES ( 2 , ‘英語’ , ‘Hello World’);
Query OK, 1 row affected (0.00 sec)

mysql>

正常に追加されているか見てみることにしましょう。テーブルのデータを見るには以下のSQL文を実行します。
テーブルのデータを表示するSQL文
SELECT * FROM HELLO_WORLD_TABLE;
SQL文を入力して実行してみましょう。(上のSQL文をコピーしてコマンドラインに貼り付けてもOKです)
コマンドプロンプト
mysql> SELECT * FROM HELLO_WORLD_TABLE;
+—-+———-+——————+
| NO | LANGUAGE | MESSAGE |
+—-+———-+——————+
| 1 | 日本語 | こんにちわ 世界 |
| 2 | 英語 | Hello World |
+—-+———-+——————+
2 rows in set (0.00 sec)
mysql>

データが正常に追加されていますね。これでここでの対話型ツールでの作業は一通り終わったので対話型ツールを終了させましょう。終了するにはquitというコマンドを実行します。
コマンドプロンプト
mysql> quit
Bye
C:\>

◆JDBCドライバのダウンロードとCLASSPATHへの追加
JavaのアプリケーションからMySQLのデータベースへ接続するにはJDBCドライバが必要です。ODBC経由でAccessに接続する場合はJ2SE SDKに最初からドライバが入っているので必要ありませんでしたが、MySQLの場合はドライバをダウンロードしてCLASSPATHへ追加しなければなりません。ドライバって言っていますが普通のJavaのライブラリです。
JDBCドライバのダウンロード → http://www.mysql.com/downloads/api-jdbc.html
ここではMySQL Connector/J 2 をダウンロードしました。
(ファイル名:mysql-connector-java-2.0.14.zip)
ダウンロードしたらそのファイルを解凍しなければいけません。解凍するにはjarコマンドを使用します。
(参考)
ダウンロードしたzipファイルを解凍するには
コマンドプロンプト
C:\作業フォルダ\MySQL>jar -xf mysql-connector-java-2.0.14.zip
C:\作業フォルダ\MySQL>

解凍してできたmysql-connector-java-2.0.14という名前のフォルダに入っているmysql-connector-java-2.0.14-bin.jarをCLASSSPATHに追加してください。(追加方法はアプリケーション編を参考)

◆検索した結果を表示するコードの作成
■Javaソースコード
JDBC編でODBC経由でAccessに接続した場合との違いは
1.ドライバクラスの違い
2.データベースのURLの違い
だけです。 わかりやすいようにODBCの場合のコードをコメントアウトして残してあります。
HelloWorldJDBCMySQL.java(ここからダウンロード)
import java.sql.*;

public class HelloWorldJDBCMySQL {
public static void main(String[] args) {
try {
// ドライバクラスをロード
// Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); // ODBCの場合
Class.forName(“org.gjt.mm.mysql.Driver”); // MySQLの場合

// データベースへ接続
// Connection con =
// DriverManager.getConnection(“jdbc:odbc:helloworld”); // ODBCの場合
// MySQLの場合
String url = “jdbc:mysql:///hellodb?useUnicode=true&characterEncoding;=SJIS”;
Connection con = DriverManager.getConnection(url);

// ステートメントオブジェクトを生成
Statement stmt = con.createStatement();
String sql = “SELECT * FROM HELLO_WORLD_TABLE”;
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);
// 検索された行数分ループ
while(rs.next()){
// NOを取得
int no = rs.getInt(“NO”);
// 言語を取得
String lang = rs.getString(“LANGUAGE”);
// メッセージを取得
String msg = rs.getString(“MESSAGE”);
// 表示
System.out.println(no + ” ” + lang + ” ” + msg);
}
// データベースから切断
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

■コンパイルと実行
コマンドプロンプト
C:\作業フォルダ\JavaHello>javac HelloWorldJDBCMySQL.java
C:\作業フォルダ\JavaHello>java HelloWorldJDBCMySQL
1 日本語 こんにちわ 世界
2 英語 Hello World

C:\作業フォルダ\JavaHello>

おおおおお!表示されましたね!

◆行の削除、更新、追加をするコードの作成
次に行の削除、更新、追加を行うコードを作成します。行の削除、更新、追加を行うにはStatementインターフェースのexecuteUpdateメソッドを使用します。executeUpdateメソッドの戻り値は削除、更新、追加した行数になります。また、検索の場合はexecuteQueryメソッドを使用します。
HelloWorldJDBCMySQLUpdate.java(ここからダウンロード)
import java.sql.*;

public class HelloWorldJDBCMySQLUpdate {
public static void main(String[] args) {
try {
// ドライバクラスをロード
Class.forName(“org.gjt.mm.mysql.Driver”);
// データベースへ接続
String url = “jdbc:mysql:///hellodb?useUnicode=true&characterEncoding;=SJIS”;
Connection con = DriverManager.getConnection(url);
// ステートメントオブジェクトを生成
Statement stmt = con.createStatement();

// NOが3の行を削除するSQL文を作成します
String sql = “DELETE FROM HELLO_WORLD_TABLE ” +
“WHERE HELLO_WORLD_TABLE.NO=3”;

// クエリーを実行します
int result = stmt.executeUpdate(sql);
System.out.println(result + “行削除しました”);

// NOが3の行を新しく追加するSQL文を作成します
sql = “INSERT INTO HELLO_WORLD_TABLE (NO,LANGUAGE,MESSAGE) ” +
“VALUES(3 ,’ドイツ語’,’Hallo Welt’)”;
// クエリーを実行します
result = stmt.executeUpdate(sql);
System.out.println(result + “行追加しました”);

// NOが1の行を新しい値で更新するSQL文を作成します
sql = “UPDATE HELLO_WORLD_TABLE “+
“SET LANGUAGE=’スペイン語’,MESSAGE=’Hola Mundo’ ” +
“WHERE HELLO_WORLD_TABLE.NO=1”;

// クエリーを実行します
result = stmt.executeUpdate(sql);
System.out.println(result + “行更新しました”);

// 全ての行を検索するSQL文を作成
sql = “SELECT * FROM HELLO_WORLD_TABLE”;
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);
// 検索された行数分ループ
while(rs.next()){
// NOを取得
int no = rs.getInt(“NO”);
// 言語を取得
String lang = rs.getString(“LANGUAGE”);
// メッセージを取得
String msg = rs.getString(“MESSAGE”);
// 表示
System.out.println(no + ” ” + lang + ” ” + msg);
}
// データベースから切断
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

■コンパイルと実行
コマンドプロンプト
C:\JavaHello\MySQL>javac HelloWorldJDBCMySQLUpdate.java
C:\JavaHello\MySQL>java HelloWorldJDBCMySQLUpdate
0行削除しました
1行追加しました
1行更新しました
1 スペイン語 Hola Mundo
2 英語 Hello World
3 ドイツ語 Hallo Welt

C:\JavaHello\MySQL>

おおおお!追加されて更新できましたね!もう一度実行するとNOが3の行が存在するため1行削除してから1行追加するようになります。
コマンドプロンプト
C:\JavaHello\MySQL>java HelloWorldJDBCMySQLUpdate
1行削除しました
1行追加しました
1行更新しました
1 スペイン語 Hola Mundo
2 英語 Hello World
3 ドイツ語 Hallo Welt
C:\JavaHello\MySQL>

おおお!削除してから追加できましたね!

◆MySQLの停止
最後にMySQLを停止させましょう。以下のコマンドで停止できます。
コマンドプロンプト
C:\>mysqladmin -u root shutdown
C:\>

■関連
JDBC(トランザクション)編
JDBC(データソース)編
JDBC編
JDBC(PostgreSQL)編
プロパティファイル編

このページのご意見、ご感想、ご提案などをお聞かせください。また、不正な点、落丁などございましたらご連絡お願いいたします。
素晴らしい  良い  普通  悪い  不十分
おなまえ

コメント

メールアドレス

ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 – Java関連の書籍 – デザインパターン – 情報交換掲示板 – HOME