在mysql更新查询中自动增量

时间:2014-01-03 10:28:58

标签: java mysql sql jsp

String textbox1=request.getParameter("textbox1");
String textbox2=request.getParameter("textbox2");
String textbox3=request.getParameter("textbox3");
String textbox4=request.getParameter("textbox4");
String textbox5=request.getParameter("textbox5");
String textbox6=request.getParameter("textbox6");
String textbox7=request.getParameter("textbox7");
String textbox8=request.getParameter("textbox8");
String textbox9=request.getParameter("textbox9");
String textbox10=request.getParameter("textbox10");
String textbox11=request.getParameter("textbox11");
String textbox12=request.getParameter("textbox12");

for(int i=1;i<13;i++){
    String textbox=request.getParameter("textbox"+i+"");
    st.executeUpdate("update user_start2 set data='"+textbox+"'");
}

我有一个包含列数据,名称和ID的表。 我想用上面的查询更新表,但表中只填充了最后一个值。 我正在更新时是否可以自动接受?以便第一个数据转到第一个用户,第二个数据转到第二个用户,依此类推。

当我system out时,我能够从jsp检索值到我的servlet

3 个答案:

答案 0 :(得分:3)

我不知道你是如何/在哪里使用它,但请记住,它完全容易受到SQL注入攻击。

String textbox1=request.getParameter("textbox1");
String textbox2=request.getParameter("textbox2");
String textbox3=request.getParameter("textbox3");
String textbox4=request.getParameter("textbox4");
String textbox5=request.getParameter("textbox5");
String textbox6=request.getParameter("textbox6");
String textbox7=request.getParameter("textbox7");
String textbox8=request.getParameter("textbox8");
String textbox9=request.getParameter("textbox9");
String textbox10=request.getParameter("textbox10");
String textbox11=request.getParameter("textbox11");
String textbox12=request.getParameter("textbox12");

for(int i=1;i<13;i++){
    String textbox=request.getParameter("textbox"+i+"");
    st.executeUpdate("update user_start2 set data='"+textbox+"' where id="+i+";");
}

答案 1 :(得分:1)

我假设id是表user_start2中的唯一标识符。如果是这样,那么你需要更改上面的更新语句,以便它读取, “更新user_start2 set data ='”+ textbox +“'where id ='”+ Myuserid);

根据您的说法,我假设您的数据库中有13个条目,并且您正在更新每个条目。如果是这样,你的for循环中的id和索引之间必定有一些对应关系。如果它是文字1对1映射,那么您只需将更新语句写为

即可
"update user_start2 set data= '"+textbox+"' where id = '"+i+"'");

如果首先需要进行某些转换,您可以创建一个临时变量并将id设置为:

例如      int temp = i + 4;

"update user_start2 set data= '"+textbox+"' where id = '"+temp+"'");

答案 2 :(得分:0)

使用PreparedStatement prevents SQL Injection in Java

for(int i=1;i<13;i++){
 String textbox=request.getParameter("textbox"+i+"");
 PreparedStatement ps = con.prepareStatement("update user_start2 set data=? where id=?");

 //set the values of ?(place holders)
 ps.setString(1,textbox);
 ps.setInt(2,i); //assuming id is i.

 ps.executeUpdate();     
}

另见