<html>
<head>
<title>Welcome</title>
</head>
<body>
<form action="First_prgm" method="post">
<table>
<tr>
<td> <b>3)Not including yourself, how many adults and children live in the same home as you on a permanent basis?</b></td>
<td><input type="checkbox" name="children" value="adults"> Adults (aged 18 and over) <br>
<input type="checkbox" name="children" value="0-4 years">Children-aged 0-4 years / house mates <br>
<input type="checkbox" name="children" value="5-8 years">Children-aged 5-8 years <br>
<input type="checkbox" name="children" value="9-11 years"> Children-aged 9-11 years <br>
<input type="checkbox" name="children" value="12-15 years"> Children-aged 12-15 years <br>
<input type="checkbox" name="children" value="16-17 years">Children-aged 16-17 years<br><br></td>
</tr>
</table>
</body>First_prgm.java:
public class First_prgm extends HttpServlet {
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String insertTableSQL = "INSERT INTO MembersQnariesData"
+ "(MemberID,FirstName,LastName,AgrGroup,AgeBrackets,LivingArrangement,DateOfBirth) VALUES"
+ "(?,?,?,?,?,?,?)";
int id = Integer.parseInt(request.getParameter("mid"));
String fname = request.getParameter("first");
String lname=request.getParameter("last");
String a[] =request.getParameterValues("children");
String age_brackets = request.getParameter("age");
String living_arngmt = request.getParameter("member");
String dob = request.getParameter("DOB");
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://server;databaseName","username","password");
PreparedStatement ps = con
.prepareStatement(insertTableSQL);
ps.setInt(1,id);
ps.setString(2,fname);
ps.setString(3,lname);
for(int j=0; j <a.length; j++){
ps.setString(4,a[j]);
out.println("selected values are"+a[j]);
}
ps.setString(5,age_brackets);
ps.setString(6, living_arngmt);
ps.setString(7,dob);
int i = ps.executeUpdate();
if(i>0){
out.println(i+ "row inserted");
}
}
catch (Exception e2) {
e2.printStackTrace();
}
out.close();
}谁能帮我从this.Am开始,我已经创建了一个带有复选框的web应用程序。当用户选择值时,最新的值插入到数据库中。为此,我需要将选定的值插入database.How的不同列中。
非常感谢。
发布于 2018-10-23 14:32:31
下面的代码就是问题所在,
for(int j=0; j <a.length; j++){
ps.setString(4,a[j]);
out.println("selected values are"+a[j]);
}你有固定的计数器值为-4,这就是为什么你只得到最后的值。
由于预先不知道复选框的数量,所以需要使用StringBuilder动态构造查询,并在查询中添加a.length问号。
然后,在PreparedStatement中设置值时,您需要获取一个int counter并在设置值之后增加它。
ps.setInt(1,id);
ps.setString(2,fname);
ps.setString(3,lname);
ps.setString(4,age_brackets);
ps.setString(5, living_arngmt);
ps.setString(6,dob);
int counter = 7; //since six question marks are already added for other fields
for(int j=0; j <a.length; j++){
ps.setString(counter++,a[j]);
out.println("selected values at index : "+j+" is : "+a[j]);
}或者您可以初始化counter = 1并从头开始,
int counter = 1;
ps.setInt(counter++,id);
ps.setString(counter++,fname);
ps.setString(counter++,lname);
ps.setString(counter++,age_brackets);
ps.setString(counter++, living_arngmt);
ps.setString(counter++,dob);
; //since six question marks are already added for other fields
for(int j=0; j <a.length; j++){
ps.setString(counter++,a[j]);
out.println("selected values at index : "+j+" is : "+a[j]);
}https://stackoverflow.com/questions/52929249
复制相似问题