Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用动态java变量在jsp中删除一条语句中的多行_Java_Sql_Jsp_Jdbc - Fatal编程技术网

使用动态java变量在jsp中删除一条语句中的多行

使用动态java变量在jsp中删除一条语句中的多行,java,sql,jsp,jdbc,Java,Sql,Jsp,Jdbc,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<

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>

Java
.NET
PHP
C/C++
PERL
PERL
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) {
    }
%>

当我只选择一个复选框时,该值将被删除,但不会使用多个复选框 有人能帮我吗?

这样做吗

SELECT * FROM checkdata WHERE name IN(('"+vwarnid+"'))");

返回任何行?

您在子句中的
应以

IN('Java','.NET','PHP')
但按照你的编码方式,结果是

IN('Java,.NET,PHP')
这显然是错误的



与具体问题无关,代码中有几个严重的问题。请清除..中的输入内容。将
IN
子句与
PreparedStatement
一起使用,如中所述。另外,将原始Java代码放入JSP文件中并不是真正推荐的做法。此外,忽略异常对于遇到麻烦的情况也没有多大帮助。另外,数据库资源应该是
close()
d in
finally
块。

请详细说明您是否有任何错误?然后如何使其成为另一种方式只需替换
”、“
by
”、“
”。当我打印字符串时,我会在选中复选框后将其输出为Java'、.NET'、.PHP。替换它是有效的,但是我不理解逻辑。字符串必须是“Java”,“.NET”,“PHP”。那么我的程序是如何工作的呢?是的,但是您的SQL中已经有了开始和结尾的引号:)