Мой оператор удаления не работает (с использованием oracle 11g) - PullRequest
0 голосов
/ 26 апреля 2020

Мой оператор удаления не работает, я пытаюсь удалить дублирующую строку, если пользователь ввел более одного product_id и user_id, но удаление не работает вообще.

Я пытался ввести одну строку несколько раз и hasNext возвращает true, сбрасывается, но не выполняет удаление и предупреждение

Код:

<%-- 
    Document   : cart
    Created on : Apr 24, 2020, 3:43:01 PM
    Author     : user
--%>

<%@page import="java.sql.CallableStatement"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%

            String username=(String)session.getAttribute("username");
            String product_id=request.getParameter("id");
            Connection con=null;
            Statement stmt=null;
            Statement stmt1=null;
            Statement stmt2=null;
            try{
                Class.forName("oracle.jdbc.OracleDriver");
                con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","admin","admin");
            }
            catch(ClassNotFoundException e){
                System.out.println("Class not found :"+e.getMessage());
            }
            try{
                int user_id=0;
                stmt=con.createStatement();
                stmt1=con.createStatement();
                stmt2=con.createStatement();
                //check for duplicate rows to avoid user adding to cart the same item again.
                ResultSet rs=stmt.executeQuery("SELECT user_id FROM users where user_name='"+username+"'");
                while(rs.next()){
                    user_id=Integer.valueOf(rs.getString(1));
                    System.out.println(user_id);

                }
                    stmt1.executeUpdate("INSERT INTO transaction (user_id,product_id) values('"+user_id+"','"+product_id+"')");
                    ResultSet rs_check=stmt.executeQuery("SELECT '"+user_id+"','"+product_id+"', COUNT(*) occurences from transaction GROUP BY '"+user_id+"','"+product_id+"' HAVING COUNT(*) > 1 ");
                    //check for duplicate rows after insert and then delete that row
                    System.out.println(rs_check.next());//1)false
                    boolean hasNext=rs_check.next();
                    if(hasNext){
                        //stmt2.executeUpdate("delete from transaction where user_id='"+user_id+"' and product_id='"+product_id+"'");
                        CallableStatement ctmt=con.prepareCall("{call delete_dup(?,?)}");  
                        ctmt.setInt(1,user_id);  
                        ctmt.setInt(2,Integer.valueOf(product_id));  
                        ctmt.execute();  
                        %><script>alert("you have added the item before?");</script><%
                    }
            }
            catch(SQLException e){
                System.out.println("SQL Exception: "+e.getMessage());
            }

        %>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...