MySQL Connector/Jを使ってみよう

本チュートリアルの内容

■ 開発環境 の確認

前提とする環境

このチュートリアルでは、以下の環境を想定します。


開発の準備

開発に使用するMySQLはMySQLのページからダウンロードして、インストールする必要があります。以下のリンクでMySQLに関するチュートリアルをまず実施しましょう。

DBは、上のチュートリアルで作成したものを利用することとします。


図 MySQL Connector Jの入手

zipファイルをダウンロードしたのちに、解凍して、出てきたフォルダをわかりやすいところに保存しましょう。このチュートリアルでは、以下に保存しました。

実際に使用するのは、このフォルダ内のmysql-connector-java-5.1.17-bin.jarになります。

(ページの先頭へ


■ Eclipseを使ってDB接続する

では、さっそく、Eclipseを立ち上げて、MySQLに接続してみましょう。Eclipseで、MySQLConnectというプロジェクトを作成しましょう。


図 プロジェクトのスタート

次に、クラスを作成します。先ほど作った、MySQLConnectプロジェクトのsrcでマウスを右クリックし、新規のクラスの追加を選択します。


図 クラスの作成

クラスの設定画面では、以下のように、MyQueryという名前のクラスを追加しました。この時に、このクラスが実行可能なクラスであるように設定を変更しておくとよいでしょう。


図 クラスの作成

ここまでで、クラスの作成は終了しました。次に、MySQLアクセスをするためのライブラリをインポートしておきます。

             import java.sql.Connection;
             import java.sql.DriverManager;
             import java.sql.ResultSet;
             import java.sql.SQLException;
             import java.sql.Statement;
        

図 ライブラリのインポート

次に、先ほどダウンロードしたjarファイルをビルドパスに追加します。使用しているプロジェクトでマウスを右クリックし、外部アーカイブの追加を選択します。


図 jarファイルの追加

選択後に開いたウィンドウで、先ほどダウンロードしたjarファイルを選択して開くを押下します。


図 jarファイルの追加確認

これで、MySQL Connectorの利用ができるようになります。

では、実際のプログラミングに入ろう。クラスの中に次のようなコードを追加してみましょう。

         try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection(
                        "jdbc:mysql://192.168.0.19:3306/picklog_db","picklog","p!cklog");
                Statement st = conn.createStatement();
                ResultSet rs =
                st.executeQuery("select * from log_tbl");

                while(rs.next()) {
                    int id = rs.getInt(1);
                    int location = rs.getInt(2);
                    String tid = rs.getString(3);
                    String time = rs.getString(4);
                    System.out.println
                         ("ID:"+id+" location:"+location+" tid:"+tid+" time:"+time);
                    }
                    rs.close();
                    st.close();
                    conn.close();
                    System.exit(0);
            } catch (ClassNotFoundException e) {
                System.out.println("ドライバを読み込めませんでした "+ e);
            } catch (SQLException e) {
                System.out.println("データベース接続エラー"+ e);
            }
            
        

ここで書いたコードについて、少しだけ解説をすると、Connection connでは、接続するDBを定義しています。ここでは、前提としているMySQLのチュートリアルで作成した、DB(picklog_db)に接続しています。ユーザ名とパスワードもその際のものです。また、接続先として、サーバーが動いている端末のIPアドレスも指定しています。これは、チュートリアルを作成した環境のPCのアドレスです。

(ここで注意したいのは、MySQLの接続は、TCP3306番を使用しているので、ファイアウォール内の端末から、ファイアウォール外のサーバーに接続しようとしたり、あるいは、使用しているPCのセキュリティソフトが、3306ポートを遮断している場合には、接続ができなくなります)

StatementやResultSetは、JDBCで定義されているクラスですが、DB接続では、このような使い方をするものとして、覚えてしまいましょう。Statementで定義したインスタンスにexecuteQueryメソッドを用いて、SQL文を書いています。ここでは、使用するpicklog_db内のlog_tblのメンバーを個々に指定しています。

データの抽出には、while文を使用します。ResultSetのインスタンスであるrsがあるうちは、このwhile文が繰り返されることになります。rsに対して、getIntメソッドやgetStringメソッドを使用することで、得られたクエリ結果のデータを参照することができます。getIntやgetStringメソッドのカッコ内が何番目の要素かを示しています。

ここでは、クエリ結果をSystem.printlnで標準出力に書き出しています。Exceptionの取り扱いは、DB接続を行う際に標準的なものとして、このように使うようにしよう。

では、実際にこのコードを動かしてみましょう。作成したコードで、マウスを右クリックし、実行から、Javaアプリケーションを選択します。


図 プログラムの実行

すると、コンソール画面に以下のような検索結果が表示されると思います。


図 実行結果

無事にMySQLに接続できたのが確認できたでしょうか。

ページの先頭へ

■ 応用問題に挑戦してみよう

データの更新もやってみよう!

ページの先頭へ