checkbox.jsp
<form action="test.jsp">
<input type="checkbox" name="id" value="Java"> Java<br>
<input type="checkbox" name="id" value=".NET"> .NET<br>
<input type="checkbox" name="id" value="PHP"> PHP<br>
<input type="checkbox" name="id" value="C/C++"> C/C++<br>
<input type="checkbox" name="id" value="PERL"> PERL <br>
<input type="checkbox" name="id" value="vb SCRIPT"> PERL <br>
<input type="submit" value="Submit">
</form>
test.jsp的
<%
String select[] = request.getParameterValues("id");
if (select != null && select.length != 0) {
out.println("You have selected: ");
for (int i = 0; i < select.length; i++) {
out.println(select[i]);
}
}
String selected="";
StringBuffer sb = new StringBuffer();
for(int i = 0; i < select.length; i++) {
sb.append(select[i] + ",");
}
String vwarnid = sb.toString();
vwarnid = vwarnid.substring(0, vwarnid.length()-1);
out.print(vwarnid);
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c = DriverManager.getConnection("jdbc:odbc:Task","","");
Statement st = c.createStatement();
PreparedStatement pst = c.prepareStatement
("DELETE FROM checkdata WHERE name IN('"+vwarnid +"')");
int i=pst.executeUpdate();
out.print(i);
out.println("deleted");
} catch(Exception e) {
}
%>
当我只选择一个复选框时,该值将被删除,但不会选中多个复选框 任何人都可以帮助我吗?
答案 0 :(得分:1)
这是
吗?SELECT * FROM checkdata WHERE name IN(('"+vwarnid+"'))");
返回任何行?
答案 1 :(得分:1)
您的IN
子句最终应为
IN('Java','.NET','PHP')
但是你编码的方式,它最终为
IN('Java,.NET,PHP')
这显然是错误的。
与具体问题无关,您的代码中存在几个严重问题。请从SQL injection attacks清除您的输入。 Learn PreparedStatement
。在this answer中概述了IN
与PreparedStatement
一起使用的条款。另外,将原始Java代码放在JSP文件中并不是推荐的做法。 Learn servlets。同样忽略异常对于遇到麻烦的情况也没有多大帮助。此外,数据库资源应在close()
块中finally
d。