前提・実現したいこと
フォームから送信されたIDを基に、DBから商品情報を取り出すメソッドを作っています。
現在try文で二重で囲んでいますが、1つだけにしたいです。
この場合、「psmt.setInt(1, id)」はどこにいれるべきなんでしょうか。
発生している問題・エラーメッセージ
try (Connection con = getConnection(); PreparedStatement psmt = con.prepareStatement(sql.toString()); ResultSet rs = psmt.executeQuery()) { psmt.setInt(1, id); 上記の形でsetIntをtry文の中に入れてしまうと、 java.sql.SQLException: No value specified for parameter 1 というエラーが発生してしまいます。 デバッグではフォームからIDはちゃんと送信されていますので、文法が間違っているのかなと思っています・・・
該当のソースコード
public ProductBean findOne(int id) throws ClassNotFoundException, SQLException { ProductBean productBean = new ProductBean(); StringBuilder sql = new StringBuilder(); sql.append("select product_ID, "); ・・・省略・・・ sql.append("from t_product "); sql.append("where product_ID=?"); try (Connection con = getConnection(); PreparedStatement psmt = con.prepareStatement(sql.toString())) { psmt.setInt(1, id); try (ResultSet rs = psmt.executeQuery()) { while (rs.next()) { productBean.setId(rs.getInt("product_ID")); ・・・省略 } } } return productBean; }
試したこと
try (Connection con = getConnection(); PreparedStatement psmt = con.prepareStatement(sql.toString()); ResultSet rs = psmt.executeQuery(); psmt.setInt(1, id)){
トークンに構文エラーがあります。構成の位置が間違っています。
上記のエラーが出てしまいます。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。