удалить несколько строк в одном выражении в jsp с использованием динамической переменной Java - PullRequest
0 голосов
/ 21 марта 2011

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) {
    }
%>

когда я выбираю только один флажок, значение удаляется, но не с множественным выбором флажков Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 21 марта 2011

Ваше предложение IN должно заканчиваться как

IN('Java','.NET','PHP')

, но, как вы его закодировали, оно заканчивается как

IN('Java,.NET,PHP')

, что, очевидно, неправильно.


Независимо от конкретной проблемы, в вашем коде есть несколько серьезных проблем.Пожалуйста, очистите ваш ввод от SQL-инъекций атак . Обучение PreparedStatement.Использование IN предложения с PreparedStatement обрисовано в общих чертах в этом ответе .Кроме того, размещение исходного кода Java в файле JSP на самом деле не рекомендуется. Учим сервлеты .Также игнорирование исключений не очень полезно для случая, когда вы сталкиваетесь с проблемами.Также ресурсы БД должны быть close() d в finally блоке.

1 голос
/ 21 марта 2011

Это

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

вернуть какие-нибудь строки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...