前提・実現したいこと
ショッピングカートのプログラミングを作っています。
今行いたいのは、注文個数を在庫テーブルから減らし、更新するところです。
実行すると以下のようなエラーがでます。
発生している問題・エラーメッセージ
Index 1 out of bounds for length 1 [(stmt.setInt(1,num[i]);)が該当部分]
該当のソースコード
//Get parameters(パラメーター取得) request.setCharacterEncoding("UTF-8"); String[] itemId=request.getParameterValues("itemId");//商品ID String[] numbr = request.getParameterValues("numbr");//注文個数 String[] stock = request.getParameterValues("stock");//在庫 String userId = (String) request.getSession(false).getAttribute("userId");⇒ユーザーID try { //Database connection(データベース接続) Class.forName("com.mysql.cj.jdbc.Driver"); this.con = DriverManager.getConnection(JDBC_URL + DB_NAME,DB_USER,DB_PASS); //Update information row by row(情報を一行ごとに更新) String[] row = request.getParameterValues("itemId");//(商品分の行数) int i = 0; while (i< row.length) { //Reduce input quantity from stock(在庫から入力個数を減らす) **int[] num = {Integer.parseInt(stock[i]) - Integer.parseInt(numbr[i])};** //SQL statement String query = "UPDATE PRODUCT_STOCK " + "SET STOCK = ?,UPD_STAF_CD = ?, UPD_DATE = NOW() " + "WHERE ITEM_ID = ? "; //Excecute SQL(SQL実行) PreparedStatement stmt = con.prepareStatement(query); ** stmt.setInt(1,num[i]);** stmt.setString(2,userId); stmt.setString(3,itemId[i]); stmt.executeUpdate(); i++; }
試したこと
・エラー内容解釈
⇒範囲外にアクセスしようとしている、というエラーがバインらしいのですが、バインドパラメーターをセットしています。
なぜエラーがでるのかわかりません。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー