今回は、JDBC ドライバ / コネクタを使用してデータベースに接続する方法のメモです。
・フレームワークなし
・ORMなし
・GradleもMavenなし(jarをダウンロードしてきて読み込ませる)
・IDEはIntelliJをベースにメモしますが、jarの追加部分は、Eclipseも記載してみたいと思います。
・データベースは、MariaDBベースでメモしていますが、他のRDBも同じ要領で行えると思います。
・データベースはすでに用意されている前提
以下のような簡単なDBテーブルの内容をSELECTクエリ実行してみます。
CREATE TABLE exchange (
id bigint(20) NOT NULL AUTO_INCREMENT,
currency ENUM('JPY', 'EUR', 'USD'),
rate bigint(3) DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO exchange (currency, rate) VALUES ('EUR', 172);
INSERT INTO exchange (currency, rate) VALUES ('USD', 160);
環境
- macOS:Sonoma 14.4
- Docker:20.10.12
- Docker Desktop:4.5.0 (74594)
- docker-compose:1.29.2, build 5becea4c
- IntelliJ:2023.1.7 (Ultimate Edition)
- Eclipse:2022-06 (4.24.0)
動作バージョン
- Java SDK:corretto-17(IntelliJ)、JavaSE-17(Eclipse)、
- MariaDB:mariadb:11.1.3-jammy(Docker Container)
- JDBC コネクタ:Connector/J 9.0
JDBC コネクタ jar取得
MariaDBで試しますが、MySQLのJDBCコネクタで実行可能なので、MySQLのものを利用します。
接続するデータベースに応じてダウンロードして下さい。
・MySQL コネクタ
https://www.mysql.com/jp/products/connector/
・Oracle JDBC Driver
https://www.oracle.com/jp/database/technologies/appdev/jdbc-downloads.html
以下は、MySQLの例です。
ダウンロードページに遷移して、ダウンロードを行います。
私はzipの方が展開しやすいので、zipをダウンロードしました。
ダウンロードボタンをクリックすると、ログインを促されますが、
面倒な場合、No thanks, just start my download.をクリックします。
zipがダウンロードされます。
READMEなどが含まれております。動作を確認するだけであれば、
mysql-connector-j-9.0.0.jarだけあれば十分です。
jarファイル プロジェクト設定
取得したJDBCのjarをプロジェクトで利用できるように設定します。
IntelliJ
jarファイルは読み込まれればどこに置いておいても平気だと思いますが、
今回は分かりやすく、プロジェクトルートにコピーしておきます。
プロジェクトのところで右クリックメニュー -> Open Module Settings
Librariesのところで、+ プラスマークを押して、jarを追加後、OKボタンを押します。
Eclipse
Eclipseもjarを読み込める場所に配置。今回は分かりやすくプロジェクトルート。
プロジェクト右クリックメニュー -> ビルド・パス -> 外部アーカイブの追加
ここでjarを指定して読み込ませます。
正しく読み込まれれば、参照ライブラリーに追加されます。
サンプル プログラム
以下の、簡単なサンプルプログラムを実行して、
DBアクセスできているか確認します。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world! ------------------");
// データベース接続情報
String url = "jdbc:mysql://localhost:3107/BDMenu";
String user = "maria_db_1_docker";
String password = "maria_db_1_docker_pass";
// JDBC処理用
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// JDBCドライバの登録
Class.forName("com.mysql.cj.jdbc.Driver");
// データベース接続の確立
conn = DriverManager.getConnection(url, user, password);
// SQLステートメントの作成
stmt = conn.createStatement();
// SQLクエリの実行
String sql = "SELECT * FROM exchange WHERE deleted_at IS NULL";
rs = stmt.executeQuery(sql);
// 実行結果の確認
while (rs.next()) {
int id = rs.getInt("id");
String currency = rs.getString("currency");
long rate = rs.getLong("rate");
// データの表示
System.out.println("ID: " + id + ", currency: " + currency + ", rate: " + rate);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// リソースのクローズ
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
今回のメモは以上となります。
手が空いた時に他のIDEなどもメモしたいと思います。