LoginSignup
2
0

More than 1 year has passed since last update.

EclipseでMySQLを使う

Last updated at Posted at 2021-09-29

概要

MySQLで作成したデータベースの中身をEclipse(Java)で使えるようにする
詰まったことがあったので備忘録

バージョン等

Windows10

Eclipse : 2021-06 (4.20.0)
Java : Java11
MySQL : 5.7.33

目次

  1. Javaプロジェクト作成
  2. プロジェクトにMySQLライブラリの追加
  3. MySQLからDBの値を取り出す
  4. エラー対処

1.Javaプロジェクト作成

DBtestという名前でプロジェクトを作成する。
今回はモジュールファイルも使用するので作成する。
Eclipse2021の場合は下画像のように「モジュール->module-info.javaファイルの作成」に✓を入れないとファイルが作成されないので注意
image.png

モジュールファイルの名前の先頭は小文字である必要があるみたいなのでDをdに変更
image.png

プロジェクト作成後
image.png

2.プロジェクトにMySQLライブラリの追加

MySQLのライブラリを使うためにファイルのパスを通す。
DBtestを選択後右クリックで下画像のような選択画面を出し、「ビルドパス->ビルドパスの構成」を選択する。
image.png

選択後、下画像のような画面が出てくる。
クラスパスを選択し、「外部Jarの追加」を押す。
image.png

ボタン押下後ファイルの選択画面が出てくるのでC:\Program Files (x86)\MySQL\Connector J 8.0フォルダ内(人によってフォルダの場所は異なる可能性がある)のmysql-connector-java-8.0.23.jarファイルを選択し、開くボタンを押す。
image.png

開くボタン押下後、下画像のようになる。
適用して閉じるボタンを押す。
image.png

プロジェクトフォルダ内に参照ライブラリーが新たに存在していることが確認できる。
image.png

3.MySQLからDBの値を取り出す

まず下画像のようにJavaクラスを作成する。
名前はMain パッケージ名はdbtest
image.png

その作成したMain.javaに以下のコードをコピペする。
このファイルをJavaアプリケーションで実行するとMySQLの値を取り出すことができる。

package dbtest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
    public static void main(String[] args) throws SQLException {
        String url = "jdbc:mysql://localhost/<DBのなまえ>?useSSL=false&serverTimezone=Japan";
        String user = "<ゆーざめい>"; // データベースの接続ユーザ名
        String password = "<ぱすわーど>"; // 自分の環境のMySQLのパスワード

        // データベース接続を確立
        Connection conn = DriverManager.getConnection(url, user, password);

        // 学生テーブルの中身を取得
        String sql = "select * from <テーブル名>";
        Statement stat = conn.createStatement();
        ResultSet rs = stat.executeQuery(sql); 

       /*DB構造が以下のような場合
         | 学籍番号 |    名前      |  フリガナ  | 性別 |
         | 1        |     田中     |  タナカ   |  男   |
         | 2        |     佐藤     |  サトウ    |   女  |

         実行結果
      1 田中 タナカ 男
          2 佐藤 サトウ 女

       */



        while(rs.next()) {
            String id = rs.getString(1);
            String name = rs.getString(2);
            String kana = rs.getString(3);
            String gender = rs.getString(4);
            System.out.printf("%s %s %s %s%n", id, name, kana, gender);
        }
        // データベース接続を閉じる
        conn.close();
    }
}

4.エラー対処

エラーが多々起こったのでその対処法

その1

image.png

image.png

対処法

modlue-info.javaを以下のように変更

image.png

その2

Main.javaを実行後以下のようなエラー

Exception in thread "main" java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??' at line 1
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.StatementImpl.executeQuery(StatementImpl.java:1198)
    at dBtest/dbtest.Main.main(Main.java:24)

対処法

Main.java内のurl変数に「&useUnicode=true&characterEncoding=utf8」を追加する。

//変更前
String url = "jdbc:mysql://localhost/<DBのなまえ>?useSSL=false&serverTimezone=Japan";
//変更後
String url = "jdbc:mysql://localhost/<DBのなまえ>?useSSL=false&serverTimezone=Japan&useUnicode=true&characterEncoding=utf8";

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0