[Java] 23 mySQLへの接続

以前Pythonで書いたmySQL検索コードをJavaに取り込めないか調べたところ、Jython(ジャイソンと読むらしい)ならできることが判明。しかしPython2のみ対応とのことで断念し、素直にJavaで書き直します。

昨年の4月に相当苦労してVScodeでのJava開発環境を構築しMavenプロジェクトを作成できるようにしましたが、そのおかげでデータベースAPIであるJDBCを簡単に導入できました。

mySQLの自製競馬データベースに接続し、ダービー馬”シャフリヤール”の競走馬IDを検索するコードを以下に記します。

しかしこのシンプルなコードを書くだけで、Javaの取っつきにくさを知るハメになりました。

Pythonのようにfinallyを安易には使えないようです。[Java]21の記事でCSVファイルを閉じられなかった理由がわかりました。

今回はtry-with-resources文でそれなりのコードにしました。この内容でもPreparedStatementとResultSetを閉じておらず不完全ですが、とりあえずよしとします。

package mysql_test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class AppTest {
    public static void main(String args[]) {
        String url = "jdbc:mysql://localhost:3306";
        String user = "ユーザ名";
        String password = "パスワード";

        try (Connection conn = DriverManager.getConnection(url, user, password)){
            String sql = "SELECT horseID FROM horse_list.horse2018 WHERE \
            検索馬名 = 'シャフリヤール'";
            PreparedStatement ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                System.out.println(rs.getString("horseID"));}}

        catch (Exception e) {
                e.printStackTrace();}}}