以前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();}}}