JavaのPreparedStatementとは?SQLに値を安全に渡す考え方|確認問題の回答例

このページは、JavaのPreparedStatementとは?SQLに値を安全に渡す考え方の確認問題を見直すためのページです。先に自分で考えてから、回答例と見比べてください。
確認問題の回答例
String sql = "INSERT INTO songs (id, title, artist) VALUES (?, ?, ?)";
int id = 11;
String title = "夜明けのビート";
String artist = "スカイライン";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.setString(2, title);
pstmt.setString(3, artist);
int count = pstmt.executeUpdate();
解説
INSERT INTO songs (id, title, artist) VALUES (?, ?, ?) には、3つの ? があります。左から順番に、1番目が id、2番目が title、3番目が artist に対応します。
そのため、pstmt.setInt(1, id)、pstmt.setString(2, title)、pstmt.setString(3, artist) の順に値をセットします。
最後に pstmt.executeUpdate() を実行します。PreparedStatement ではSQLは作成時に渡しているため、executeUpdate(sql) ではなく executeUpdate() と書きます。