はじめに
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という名のデータベースが削除されますので、ご注意ください。
/* テストで作り直しが発生しても良いように、すでに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にて、下記のように設定を変更します。
# 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ファイルを指定し、
データベースの作成を行うと、データのインポートが完了しました。