MySQLのJDBCドライバで、JavaからMySQLに接続していきたいと思います。
Javaプロジェクトを作成
Eclipseで、「ファイル」>「新規(N)」>「Javaプロジェクト」
「プロジェクト名」を入力し、「次へ(N)」をクリック。
デフォルトの状態で「完了(F)」をクリック。
JavaプロジェクトでJDBCドライバを使えるようにする
作成したプロジェクトの上で右クリックし、「ビルド・パス(B)」>「ビルド・パスの構成(C)...」をクリック。
「ライブラリー(L)」のタブが選択された状態で「外部JARの追加(X)..」をクリック。
『C:¥Program Files (x86)¥MySQL¥Connector.J 5.1¥mysql-connector-java-5.1.41-bin.jar』 のファイルを選択。
『mysql-connector-java-5.1.41-bin.jar』が追加されるので、『OK』をクリック。
プロジェクトに『参照ライブラリー』にJDBCドライバ(mysql-connector-java-5.1.41-bin.jar)追加されていればOK。
MySQLにデータベースとテーブルを用意
コマンドプロンプトでMySQLに接続して、データベースの確認。
mysql -u root -p
パスワードを入力し(自分の場合はMySQLをインストールしたときのユーザとパスワードがroot)Enter。
SHOW DATABASES;
使用するデータベースを選択し、テーブルがあるか確認。
USE test_my_mysql;
SHOW TABLES;
テーブルが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) );
/* DBの一覧表示 */ SHOW DATABASES;
/* DB切り替え */ USE sampledb;
/* データの挿入 */ /* 従業員マスタ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;
とりあえず、テーブルができたので、再び、Eclipseのほうの作業に移ります。
Javaプロジェクトでクラス作成
「src」の上で右クリックし、「新規(W)」>「クラス」 をクリック。
「パッケージ(K):」 と「名前(M):」を入力し、「完了(F)」をクリック。
例外処理がいまだによく分からないけど、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) { // 他のエラー } } }
コマンドライン引数を指定して実行するには、の▼ボタンをクリックして「実行の構成(N)...」を選択します。
「(x)= 引数」のタブを選択し、入力します。複数入力する場合は、半角スペースを空けます。
データベースに接続し、テーブルからデータを取得できました。
講義のスピードが日に日に増してきてる今日この頃です。
今回はこのへんで。