JavaからMySQLに接続

MySQLJDBCドライバで、JavaからMySQLに接続していきたいと思います。

Javaプロジェクトを作成

Eclipseで、「ファイル」>「新規(N)」>「Javaプロジェクト」

f:id:ts0818:20170714203620j:plain

「プロジェクト名」を入力し、「次へ(N)」をクリック。

f:id:ts0818:20170714203616j:plain

デフォルトの状態で「完了(F)」をクリック。

f:id:ts0818:20170714203611j:plain

JavaプロジェクトでJDBCドライバを使えるようにする

作成したプロジェクトの上で右クリックし、「ビルド・パス(B)」>「ビルド・パスの構成(C)...」をクリック。

f:id:ts0818:20170714203608j:plain

「ライブラリー(L)」のタブが選択された状態で「外部JARの追加(X)..」をクリック。

f:id:ts0818:20170714203604j:plain

『C:¥Program Files (x86MySQL¥Connector.J 5.1¥mysql-connector-java-5.1.41-bin.jar』 のファイルを選択。

f:id:ts0818:20170714204305j:plain

mysql-connector-java-5.1.41-bin.jar』が追加されるので、『OK』をクリック。 

f:id:ts0818:20170714204645j:plain

プロジェクトに『参照ライブラリー』にJDBCドライバ(mysql-connector-java-5.1.41-bin.jar)追加されていればOK。

f:id:ts0818:20170714204642j:plain

 

MySQLにデータベースとテーブルを用意

コマンドプロンプトMySQLに接続して、データベースの確認。

mysql -u root -p

パスワードを入力し(自分の場合はMySQLをインストールしたときのユーザとパスワードがroot)Enter。

SHOW DATABASES;

f:id:ts0818:20170714205310j:plain

使用するデータベースを選択し、テーブルがあるか確認。 

USE test_my_mysql;
SHOW TABLES;

f:id:ts0818:20170714210312j:plain

テーブルが1つもないので、テーブルを作成します...と思いましたが、せっかくなのでデータベースを作成し、テーブルの作成も行いたいと思います。

/* 新規DBの作成 */
CREATE DATABASE sampledb;
/* 新規Tableの作成 */
CREATE TABLE sampledb.employees
(
    code                        CHAR(6) NOT NULL,
    name                        VARCHAR(15),
    age                         INT,
    section                     VARCHAR(15),
    CONSTRAINT PRIMARY KEY (code)
);

f:id:ts0818:20170714211434j:plain

 

/* DBの一覧表示 */
SHOW DATABASES;

f:id:ts0818:20170714211756j:plain

 

/* DB切り替え */
USE sampledb;

f:id:ts0818:20170714212128j:plain

 

/* データの挿入 */
/* 従業員マスタINSERT */
INSERT INTO sampledb.employees  VALUES('201021','田中一郎',35,'営業部');
INSERT INTO sampledb.employees  VALUES('201024','山田花子',25,'営業部');
INSERT INTO sampledb.employees  VALUES('201042','鈴木正雄',30,'開発部');
INSERT INTO sampledb.employees  VALUES('201047','高橋和男',39,'開発部');
INSERT INTO sampledb.employees  VALUES('201063','佐藤愛',23,'研修部');

SELECT * FROM sampledb.employees;

f:id:ts0818:20170714212309j:plain

 

とりあえず、テーブルができたので、再び、Eclipseのほうの作業に移ります。

Javaプロジェクトでクラス作成

「src」の上で右クリックし、「新規(W)」>「クラス」 をクリック。

f:id:ts0818:20170714212925j:plain

「パッケージ(K):」 と「名前(M):」を入力し、「完了(F)」をクリック。

f:id:ts0818:20170714213350j:plain

例外処理がいまだによく分からないけど、JavaからMySQLに接続できました。

package mysqlEmployees;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class SelectEmployees {

  public static void main(String[] args) {
    // データベース接続情報
    String url      = "jdbc:mysql://localhost:3306/sampledb?useSSL=false";
    String user     = "root";
    String password = "root";

    try(Connection conn = DriverManager.getConnection(url, user, password);
      PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM employees WHERE code = ?");) {

      // コマンドライン引数の不備があった場合
      if(args.length != 1) {
        throw new ArrayIndexOutOfBoundsException();
      }
      // コマンドライン引数を取得
      String input_code = args[0];

      // コマンドライン引数をプレースホルダにセット
      pstmt.setString(1, input_code);
      // SELECT文の実行
      ResultSet res = pstmt.executeQuery();
      String result = "";  // 結果格納用
      String message = ""; // メッセージ用変数
      // ResultSetが空行かどうか判定用のカウンター変数
      int resCount = 0;
      // SELECT文が成立した場合
      while(res.next()) {
        result +=
            "\n ==> "      +
            "code: "    + res.getString("code") + " " +
            "name: "    + res.getString("name") + " " +
            "age: "     + res.getInt("age")  + " " +
            "section: " + res.getString("section")
        ;
        resCount++;
      }
      // SELECT文が成立しなくてもエラーにはならないので、ResultSetが空かどうかで判定
      if(resCount == 0) {
        message = "次のレコードを抽出できませんでした。";
      } else {
        message = "次のレコードを抽出しました。"; 
      }
      System.out.println(message + "  CODE: " + input_code + result);
    } catch(ArrayIndexOutOfBoundsException e) {
      System.out.println("引数に従業員コードを指定してください。");
    } catch(Exception e) {
      // 他のエラー
    }
  }

}


コマンドライン引数を指定して実行するには、f:id:ts0818:20170714224011j:plainの▼ボタンをクリックして「実行の構成(N)...」を選択します。

f:id:ts0818:20170714223758j:plain

 「(x)= 引数」のタブを選択し、入力します。複数入力する場合は、半角スペースを空けます。

f:id:ts0818:20170714223606j:plain

データベースに接続し、テーブルからデータを取得できました。

f:id:ts0818:20170714223724j:plain

講義のスピードが日に日に増してきてる今日この頃です。 

広告を非表示にする