目標#
SQL 環境、Java ライブラリの設定、簡単な例を含めて、Java とデータベースのインタラクションを実現する。
環境の設定#
ホストの設定:IntelliJ IDEA、SDK18、Windows11
ダウンロード:
Connector/J
システムの選択 Platform Independent
MySQL Community 8.0
mysql-installer-community をダウンロードしてください。mysql-installer-web-community ではありません。
MySQLCommunity をダウンロードしたら、インストールしてください。サーバーのみをインストールし、情報を覚えておいてください。データベースのアカウントを設定します(この例では <username>、<password > です。画像はインストールが成功した後であり、インストールプロセスとは異なります)。
IDEA の設定#
MySQL - 新しいデータソースの作成と接続の実現#
プロジェクトを作成した後、メニューバーの表示 - ツールウィンドウ - データベース、新しいデータソースの作成 - MySQL ドライバのダウンロード、クラス名を記録してください(例:com.mysql.cj.jdbc.Driver)。
データソース、認証情報には MySQL のインストール時のデータベースアカウントを入力してください。URL アドレスを記録してください。
下部のテスト接続を確認して、成功したら次に進んでください。
Connector/J をプロジェクトライブラリにインポート#
ファイル - プロジェクト構造 - ライブラリ、ダウンロードした Connector/J の解凍された jar ファイルを追加し、OK をクリックしてください。
インタラクションの実現#
データベース#
コンソールに移動し、MySQL コマンドを入力してください。MySQL チュートリアル:MySQL データベースの学習ガイド(初心者から上級者まで)を参照してください。
以下のコードを入力してください:
CREATE DATABASE test; #データベースの作成
USE test; #操作するデータベースの選択
CREATE TABLE IF NOT EXISTS students ( #studentsテーブルの作成
id INT NOT NULL PRIMARY KEY ,
name TEXT NOT NULL ,
age INT NOT NULL );
INSERT INTO students VALUES (1,'name1',18); #データの挿入
INSERT INTO students VALUES (2,'name2',12);
INSERT INTO students VALUES (3,'name3',22);
実行後、作成が完了するのを確認してください。
Java クラス#
新しい Java クラスを作成し、以下のコードを入力してください。
import java.sql.*;
public class Test {
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";//ドライバークラス名
static final String DB_URL = "jdbc:mysql://localhost:3306";//データベースのURLアドレス
static final String USERNAME = "username";//データベースのユーザー名
static final String PASSWORD = "password";//データベースのパスワード
public static void main(String[] args){
Connection conn = null;
Statement stat = null;
try {
Class.forName(JDBC_DRIVER);
System.out.println("Connecting...");
conn = DriverManager.getConnection(DB_URL,USERNAME,PASSWORD);
stat = conn.createStatement();
String sql = "SELECT * FROM test.students";//ここにMySQLのクエリを入力します
ResultSet rs = stat.executeQuery(sql);
while(rs.next()){//ループ
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id = " + id);
System.out.println("name = " + name);
System.out.println("age = " + age);
}
rs.close();//解放
stat.close();
conn.close();
} catch (Exception e){
e.printStackTrace();
} finally {
try {
if (stat!=null) stat.close();
} catch (SQLException ignored) {
} try {
if (conn!=null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
System.out.println("Success!");
}
}
}
出力結果
Connecting...
id = 1
name = name1
age = 18
id = 2
name = name2
age = 12
id = 3
name = name3
age = 22
Success!