LoginSignup
2
2

More than 3 years have passed since last update.

【Java】MySQLの操作方法(Windows) その1:DB準備編

Last updated at Posted at 2021-05-01

はじめに

Javaでのデータベースの操作方法をまとめました。
当方、初心者ですが、困っている人の助けになればと思います。

本記事では、テスト用のデータベースの準備を行います。

参考サイト:Javaコード入門

次回記事 →【Java】MySQLの操作方法(Windows) その2:Javaでの操作

前提

・Windowsを使用
・MySQLをインストール済み
(Pathを通したり、JDBCドライバもインストール済み)
・Eclipseもインストール済み

なお、動作環境は下記の通りです。

項目 情報 備考
Java バージョン 14.0.2 コマンドプロンプトにて java -version で確認
MySQL バージョン 8.0.24 コマンドプロンプトにて mysql --version で確認
C:\>java -version
java version "14.0.2" 2020-07-14
Java(TM) SE Runtime Environment (build 14.0.2+12-46)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)

C:\>mysql --version
mysql  Ver 8.0.24 for Win64 on x86_64 (MySQL Community Server - GPL)

準備(データベース)

テストで使用するデータベースとテーブルは下記のSQLファイルを実行する事で、
作成していきます。(作り直しをすぐに出来る様にするため)

※※ 注意 ※※
下記のsqlにはデータベースの削除が含まれています。
sampleという名のデータベースが削除されますので、ご注意ください。

sampleCreate.sql
/* テストで作り直しが発生しても良いように、すでにsampleという名のデータベースがあればDROP */
DROP Database IF EXISTS sample;

CREATE Database sample;
CREATE table sample.members (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `sex` char(1) DEFAULT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

USE sample;
INSERT INTO `members` VALUES (001,'テストタロウ','男',12), (002,'うわさの太郎','男',99), (003,'かわいいあの子','女',20), (004,'いい感じのあの子','女',25);

上記のSQLファイルを適当なパスに配置します。
(今回はC:\TEMP\java_sql_testディレクトリ内に配置)

コマンドプロンプトを起動し、下記のように、SQLへログインします。

Microsoft Windows [Version 10.0.19041.928]
(c) Microsoft Corporation. All rights reserved.


C:\TEMP\java_sql_test>mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.24 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

SQLへログイン後、sourceコマンドにてSQLファイルを指定して、実行します。

mysql> source sampleCreate.sql
Query OK, 1 row affected (0.05 sec)

Query OK, 1 row affected (0.01 sec)

Query OK, 0 rows affected, 3 warnings (0.03 sec)

Database changed
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql>

結果を確認してみます。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sakila             |
| sample             |  ←sampleというデータベースが作成されている
| sys                |
| world              |
+--------------------+
8 rows in set (0.03 sec)

mysql> use sample
Database changed
mysql> show tables;
+------------------+
| Tables_in_sample |
+------------------+
| members          |  ←membersというテーブルが作成されている
+------------------+
1 row in set (0.01 sec)

mysql> select * from members;                      ←格納されているデータを確認
+----+--------------------------+------+-----+
| id | name                     | sex  | age |
+----+--------------------------+------+-----+
|  1 | テストタロウ             | 男   |  12 |     ←SQLファイルにて準備したデータが入っている
|  2 | うわさの太郎             | 男   |  99 |
|  3 | かわいいあの子           | 女   |  20 |
|  4 | いい感じのあの子         | 女   |  25 |
+----+--------------------------+------+-----+
4 rows in set (0.00 sec)

mysql>

これで、テスト用のデータベースの準備が完了しました。

次回、実際に準備したデータベースをJavaを用いて操作していきます。

番外編

sourceコマンドを使用してテスト用のDB作成中に下記のようなエラーが発生する場合、

ERROR 1366 (HY000): Incorrect string value: '\xE3\x82\xBF\xE3\x82\xA4...'

日本語のデータをテーブルにINSERTする際にエラーになっているようです。
(文字コードの問題)

MySQLへログインし、statusコマンドを実行し、確認します。

mysql> status
--------------
mysql  Ver 8.0.24 for Win64 on x86_64 (MySQL Community Server - GPL)
  ~~
Server characterset:    utf8mb3
Db     characterset:    utf8mb3
Client characterset:    utf8mb3
Conn.  characterset:    utf8mb3
  ~~
--------------

utf8ではなく、chcp932(?)などになっている場合、変更が必要です。

変更方法はMySQLの設定ファイルに設定を追加します。
設定ファイルのひな型は"C:\ProgramData\MySQL\MySQL Server 8.0"内に、my.iniがあります。
インストールパスを変更している場合は、異なると思われます。
(なお、programDataフォルダは隠しフォルダなので、表示オプションにて隠しフォルダを表示するに設定してください)

my.iniにて、下記のように設定を変更します。

my.ini
# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
~~
default-character-set=utf8  ←clientセクションにて、文字コードをutf8に設定
~~
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
~~
character-set-server=utf8  ←serverセクションにて、文字コードをutf8に設定
~~

変更したファイルはMySQLが起動時に読み込む場所に配置する必要があります。
今回は、"C:\Program Files\MySQL\MySQL Server 8.0\my.ini" に配置しました。
(インストールパスを変更している場合は適切な場所に変更してください。)

参考:MySQLの文字コードについて(https://qiita.com/YusukeHigaki/items/2cab311d2a559a543e3a)
参考:my.iniの場所と配置先(https://www.dbonline.jp/mysql/install/index3.html)

MySQLのサービスを再起動することで、設定が変更されます。

再度、MySQLへログインし、sourceコマンドにてSQLファイルを指定し、
データベースの作成を行うと、データのインポートが完了しました。

次回記事 →【Java】MySQLの操作方法(Windows) その2:Javaでの操作

2
2
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
2