JDBCいろいろ

接続

//接続先URL
String url = "jdbc:mysql://localhost:3306/study?autoReconnect=true&useSSL=false&serverTimezone=UTC";
//ユーザ名
String user = "root";
//パスワード
String pass = "root";
//接続する
//JavaSE7よりtry-with-resourcesが使えるようになっているので、
//クローズし忘れや簡潔なコード記述のためにこう書くのがベター
try (Connection con  = DriverManager.getConnection(url, user, pass)) {
    //SQLの実行はここに書く
} catch (SQLException e) {
    e.printStackTrace();
}

ちなみにURLの個所についていろいろ
例外が出る場合がある。
①The server time zone value ' (W)' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver
②Establishing SSL connection without server's identity verification
URLの部分の、
①autoReconnect=true&useSSL=false
②&serverTimezone=UTC
で、それぞれ対処。 SSL接続をしないこと、サーバのタイムゾーン指定をすることで例外抑止する。

SQLの実行

try (Connection con  = DriverManager.getConnection(url, user, pass)) {
    //Statementオブジェクトの生成
    Statement st = con.createStatement();
    String selectSql = "select * from user";
    String update = "update user set id = 3";
    //select分の発行は#executeQueryを使用する
    st.executeQuery(selectSql);
    //更新SQLの場合は#executeUpdateを使用する
    st.executeUpdate(update);
    //なお、#executeメソッドも存在する
    //executeは結果が存在する場合にtrueを返す
    boolean result = st.execute(selectSql);
    
} catch (SQLException e) {
    e.printStackTrace();
}

SQLの実行②結果の取得・操作

//クエリの結果はResultSetオブジェクトが保持している
ResultSet resultset = st.executeQuery(selectSql);
//更新系は更新件数が戻り値となる
int updateCnt = st.executeUpdate(update);

//ResultSetからのデータ取得
resultset.next();
//このように書くことで結果セットの全レコードに対する処理ができる
while (resultSet.next()) {
    System.out.println(rs.getInt("id"));
}
//