2011-03-21 7 views
0

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

値が複数で削除ではなくなっている動的なJavaの変数を取って、JSPで1つのステートメントで複数の行を削除しますチェックボックスの選択 誰か助けてくれますか?

+0

Plsはどんなエラーを出していますか? –

答えて

1

あなたIN句は

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

として終わるはずですが、あなたがそれをコード化されたような方法は、それは明らかに間違っている

IN('Java,.NET,PHP') 

として終わります。具体的な問題とは無関係の


は、あなたのコード内のいくつかの重大な問題があります。あなたの入力をSQL injectionattacksから消毒してください。 Learn PreparedStatementPreparedStatementとのIN節の使用については、this answerで概要を説明しています。生のJavaコードをJSPファイルに入れることは、実際には推奨される方法ではありません。 Learn servlets。また、例外を無視することは、あなたが問題に遭遇した場合にはあまり役に立ちません。また、DBリソースはfinallyブロックのclose() dである必要があります。

+0

これを他の方法にする方法 – Deep

+0

'' "、" 'を' ''、'" 'で置き換えてください。 – BalusC

+0

私は文字列を出力するときにJava '、'。NET '、' PHP 'のチェックボックスを選択した後に出力されています。動作していますが、logic.tsを理解できません。 .NET '、' PHP '。その後、私のプログラムはどのように働いているのですか? – Deep

1

この

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

復帰任意の行をしていますか?

関連する問題