Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 无法在servlet中使用WHILE语句添加多行_Jsp_Servlets - Fatal编程技术网

Jsp 无法在servlet中使用WHILE语句添加多行

Jsp 无法在servlet中使用WHILE语句添加多行,jsp,servlets,Jsp,Servlets,我正在使用JSP和使用jdbc的servlet为我的项目创建一个在线电子门户网站。但是我遇到了一个奇怪的错误。我无法使用while语句添加多行。我正在获取产品ID(PID)通过会话从hashmap获取购物车中所有可用项目的,我存储相应的键,即(这里的键是PID,值是数量)。我正在获取pid,并使用该pid获取该产品的相应属性。我正在循环中使用他/她的购物车中的项目更新特定用户表。使用insertuserdata。首先,我检查是否存在特定用户的表。然后,我只是添加我正在创建的其他记录一个新表并逐个

我正在使用JSP和使用jdbc的servlet为我的项目创建一个在线电子门户网站。但是我遇到了一个奇怪的错误。我无法使用while语句添加多行。我正在获取产品ID(PID)通过会话从hashmap获取购物车中所有可用项目的,我存储相应的键,即(这里的键是PID,值是数量)。我正在获取pid,并使用该pid获取该产品的相应属性。我正在循环中使用他/她的购物车中的项目更新特定用户表。使用insertuserdata。首先,我检查是否存在特定用户的表。然后,我只是添加我正在创建的其他记录一个新表并逐个插入记录 下面是servlet代码

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            HttpSession ses=request.getSession();
            HashMap h=(HashMap)ses.getAttribute("list");
            String usr=(String) ses.getAttribute("usr");
            String usertable="USER"+usr;
            Collection c=h.keySet();
            Iterator itr=c.iterator();
            connect.dbconnect con=new connect.dbconnect();
            int tCost=Integer.parseInt((String)ses.getAttribute("tCost"));
            while(itr.hasNext())
            {
                Object pid=itr.next();
                String v;
                v=con.Pid_buy((String)pid);
                String pname=v;
                String quan=(String)h.get(pid);
                Date dt=new java.util.Date();
                String date=(dt.toString());
                String status="Purchased";

               try{
                    if(con.chktable(usertable))
                {
                   int num=con.getSID(usertable);
                   con.insertuserdata(usertable,num+1,quan,date,pname,status,tCost);
                }
                if(!con.chktable(usertable))
                {
                    con.createnewuser(usertable);
                    con.insertuserdata(usertable,1,quan,date,pname,status,tCost);
                }
               }catch(Exception e)
               {
                   e.printStackTrace();
               }
               con.updateStock((String)pid,Integer.parseInt(quan));
            }
               h.clear();
               String count=null;
               ses.setAttribute("count", count);
               ses.setAttribute("list", h);
              // response.sendRedirect("home.jsp");


        } finally {  


            out.close();
        }
    }
这里的列表是包含项目列表及其数量的hashmap。t成本只是我作为参数得到的总成本。 getSID函数提供表中的行数。 PID\u BUY告诉我产品的名称

这里的问题是,它只添加了数据库中的最后一个产品,而不是所有的产品。我得到了一个一般错误

以下是我的插入数据方法

public void insertuserdata(String tbname,int pk,String quantity,String date,String pname,String status,float tCost) throws SQLException, ClassNotFoundException 
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con=DriverManager.getConnection("jdbc:odbc:product");
              // Table exists
            String data=tbname ;

            PreparedStatement smt1=con.prepareStatement("insert into ["+data+"] values (?,?,?,?,?,?)");

            smt1.setInt(1,pk);
            smt1.setString(2,quantity);
            smt1.setString(3,date);
            smt1.setString(4,pname);
            smt1.setString(5,status);
            smt1.setFloat(6,tCost);
            smt1.executeUpdate();




        }

尝试使用struts和hibernate或集成spring来实现安全的应用程序