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