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

时间:2012-02-13 10:34:52

标签: jsp servlets

我正在使用jsps和servlet使用jdbc为我的项目创建一个在线电子门户网站。但是我收到一个奇怪的错误。我无法使用while语句添加多行。我正在获取产品通过会话,来自散列图的购物车中所有可用项目的ID(PID)。我存储相应的密钥,即(此处的密钥为pids,值为数量)。我正在使用pid得到pids并获得该产品的相应属性。我正在使用insertuseruser数据在 while 循环中使用他/她的购物车中的项目更新特定用户表。首先,我正在检查是否存在特定用户的表..然后我只是添加记录,否则我正在创建一个新表并逐个插入记录 这是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.tCost只是我作为参数获得的总成本。 getSID 函数为我提供了表格中的行数。 PID_BUY 为我提供了产品名称

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

以下是我的 Insertuserdata 方法

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();




        }

0 个答案:

没有答案