前提・実現したいこと
ショッピングカートのプログラムを作っています。
今行いたいのは、
- 注文個数を注文テーブルに挿入したのち、在庫テーブルから減らす
実行すると真っ白なページが表示され、
コンソールには以下のエラーが出ます。
発生している問題・エラーメッセージ
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE PRODUCT_STOCK SET STOCK = 990,UPD_STAF_CD = '1234', UPD_DATE = NOW() WHER' at line 1エラーメッセージ
該当のソースコード
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 = "INSERT INTO ORDER " + "(CUSTOMER_ID,ITEM_ID,NUMBER,PRICE,UPD_STAF_CD,UPD_DATE,INS_DATE) " + "VALUES (?,?,?,?,?,NOW(),NOW()); " +"UPDATE PRODUCT_STOCK " + "SET STOCK = ?,UPD_STAF_CD = ?, UPD_DATE = NOW() " + "WHERE ITEM_ID = ? "; //Excecute SQL PreparedStatement stmt = con.prepareStatement(query); stmt.setString(1,userId);//ユーザーID stmt.setString(2,itemId[i]);//商品ID stmt.setString(3,numbr[i]);//注文数 stmt.setString(4,price[i]);//値段 stmt.setString(5,userId); stmt.setInt(6,num);//在庫から注文数減らした分 stmt.setString(7,userId); stmt.setString(8,itemId[i]); stmt.executeUpdate(); i++; }
試したこと
INSERT文とUPDATE文の処理を分けて、片方ずつ実行すると成功します。
一つにまとめて実行するとエラーがでてしまいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/18 10:15