読者です 読者をやめる 読者になる 読者になる

JavaでMySQLに接続してデータ操作をする

Java MySQL
スポンサーリンク

JavaでMySQLを操作する基本的な部分について書きました。

JDBCドライバの取得

JavaからMySQLへ接続するにはJDBCドライバが必要です。 MySQL :: Download Connector/J からダウンロードして下さい。ダウンロードしたら解凍して、中のjarファイルを使用します。

$ tar zxvf mysql-connector-java-5.1.35.tar.gz
$ ls mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar
mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar

Maven リポジトリは以下の通り。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.35</version>
</dependency>
compile 'mysql:mysql-connector-java:5.1.35'

MySQLへの接続

まずはMySQLへの接続を試します。ローカルインストールしたMySQLの test データベースに root ユーザーで接続します。パスワードは設定していません。

import java.sql.*;

public class MySQLConnector {
    public static void main(String[] args) {
        Connection con = null;
        try {
            // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不要
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            // MySQLに接続
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
            System.out.println("MySQLに接続できました。");
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            System.out.println("JDBCドライバのロードに失敗しました。");
        } catch (SQLException e) {
            System.out.println("MySQLに接続できませんでした。");
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    System.out.println("MySQLのクローズに失敗しました。");
                }
            }
        }
    }
}

IDEを使わずにターミナルでサクッと試したい場合は適当なディレクトリを作成して次のように実行します。

$ javac -cp lib/mysql-connector-java-5.1.35-bin.jar: MySQLConnector.java
$ java -cp lib/mysql-connector-java-5.1.35-bin.jar: MySQLConnector
MySQLに接続できました。

データの取得

次のようなテーブルを使ってデータを取得してみます。

mysql> desc programing;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   | PRI | 0       |       |
| name  | varchar(255) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> select * from programing;
+------+------+
| id   | name |
+------+------+
|    1 | Java |
|    2 | Ruby |
|    3 | PHP  |
+------+------+
3 rows in set (0.01 sec)

データを取得するにはStatementを作成してexecuteQuery()でSQLを渡すとResultSetのオブジェクトで返ってきます。

            // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不要
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            // MySQLに接続
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
            System.out.println("MySQLに接続できました。");

            Statement stm = con.createStatement();
            String sql = "select * from programing";
            ResultSet rs = stm.executeQuery(sql);

            while(rs.next()){
                int id = rs.getInt("id");
                String name = rs.getString("name");
                System.out.println("取得結果 -> " + id + ":" + name);
            }

実行結果は次の通りです。

MySQLに接続できました。
取得結果 -> 1:Java
取得結果 -> 2:Ruby
取得結果 -> 3:PHP

データの更新・追加・削除

UPDATE、INSERT、DELETEのSQLを実行したい場合は、executeUpdate()でSQLを渡します。結果は更新した行数が返ってきます。

            // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不要
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            // MySQLに接続
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
            System.out.println("MySQLに接続できました。");

            Statement stm = con.createStatement();
            String sql = "insert into programing values(4, 'Python'), (5, 'Go')";
            int result = stm.executeUpdate(sql);
            System.out.println("更新件数は" + result + "です。");

実行結果は次の通りです。

MySQLに接続できました。
更新件数は2です。

テーブルにもデータが追加されていました。

mysql> select * from programing;
+----+--------+
| id | name   |
+----+--------+
|  1 | Java   |
|  2 | Ruby   |
|  3 | PHP    |
|  4 | Python |
|  5 | Go     |
+----+--------+
5 rows in set (0.00 sec)

関連記事

 【Mac】HomebrewでMySQLのインストールと起動スクリプトの設定 - TASK NOTES