1

値を編​​集できるデータベース テーブルがあります。同じものを更新したいのですが、以下は私が試したコードです。

テーブルコードは以下の通り

<table border="1px">
    <tr>
        <td><b>DBID</b></td>
        <td><b>Query Raised</b></td>
        <td><b>Time Raised</b></td>
        <td><b>Query Answered</b></td>
        <td><b>Time Answered</b></td>
    </tr>
<%
try {
    ps = con.prepareStatement("Select DBID, Query_Raised, TR, Query_Answered, TA from Scope1 where TR!='null'");

    rs = ps.executeQuery();

    while(rs.next()) {
%>
    <tr>
        <td><%=rs.getString("DBID")%></td>
        <td><input type="Text" value="<%=rs.getString("Query_Raised")%>" name="Updat"></td>
        <td><%=rs.getString("TR")%> </td>
        <td><%=rs.getString("Query_Answered")%></td>
        <td><%=rs.getString("TA")%></td>
        <td><input type="Submit" value="Update"></td>
    </tr>
<%
    } // while loop ends here

    rs.close();
    con.close();
} catch(Exception e) {
    out.println(e);
}
%>
</table>

使用される更新クエリは次のとおりです。

String a = request.getParameter("Updat");

ps = con.prepareStatement("Update Scope1 Set Query_Raised = '" + a + "'");

int i = ps.executeUpdate();

if(i == 1) {
    out.print("Done");
} else{
    out.print("Erro");
}

同じページのデータを更新するために使用する where 条件を知りたかったのです。

ありがとう

4

2 に答える 2

4

質問の最初のコード部分は JSPupdate.jspであり、2 番目の部分はあなたのサーブレットであると理解していますUpdateServlet

したがって、update.jspすべての行に<input type="text">andsubmitボタンがありますが、の<form>外側にある必要があるのは1つだけだと思う<table>​​ので、ここに私の解決策があります(いずれかを選択してください):

  1. <form>次のように、各行に複数のタグを使用します

    <form action="whatever_action_you_have_which_calls_the_servlet"
          name="form<%=rs.getString("DBID")%>"
          id="formID<%=rs.getString("DBID")%>">
       // Including name and id so that the different forms remain unique
        <tr>
            <td><%=rs.getString("DBID")%></td>
            <td><input type="Text" value="<%=rs.getString("Query_Raised")%>" name="Updat"></td>
            <td><%=rs.getString("TR")%> </td>
            <td><%=rs.getString("Query_Answered")%></td>
            <td><%=rs.getString("TA")%></td>
            <td><input type="Submit" value="Update"></td>
        </tr>
    </form>
    

    したがって、送信をクリックする<form>と、submitボタンがクリックされた が送信され、input編集された のみが送信され、出来上がりです! サーブレット コードも正常に動作します。

  2. 両方のコード ブロックを同じ JSP に含めることができます。<form>次に、ポイント 1 で説明したコード スニペットを使用します。2 番目のコード スニペットは次のようになります。

    String a = request.getParameter("Updat");
    
    if ( (a is not empty) or (a is not null)  ) {
        ps = con.prepareStatement("Update Scope1 Set Query_Raised = '" + a + "'");
    
        int i = ps.executeUpdate();
    
        if(i == 1) {
            out.print("Done");
        } else{
            out.print("Error");
        }
    }
    
    ...
    
    <form action="whatever_action_you_have_which_will_call_this_JSP" ...>
        <tr> ... your code as in point#1
        </tr>
    </form>
    
  3. Endyが言ったように、これを達成するには、ajax およびその他の JavaScript DOM 操作メソッドを使用します。
    このためには、JSP (表示用) とサーブレット (コードの更新用) が必要です。
    これは少し手間がかかるかもしれませんが、Ajax を学び、もう少し現実世界に近づくことができます。jQuery ajax
    が 最も使いやすいです。

注:
記録として、練習しているかもしれませんが、実際のプロジェクトで使用する予定がある場合は、先に読んでください。

JSP でスクリプトレットを使用するのは悪い習慣です (実際に必要な場合を除き、それがビューレベルのロジックであり、ビジネスまたはデータレベルのロジックではない場合も同様です)。さらに悪いJDBCのは、JSP 内でコードを使用することです。f_puras さんのアドバイスに従っていただければ幸いです。

なぜ私があなたの一方的なアドバイスに耳を傾ける必要があるのか​​ 疑問に思っている場合は、次のことを考えてみてください。

お役に立てれば。

于 2012-09-04T15:39:34.990 に答える
0

AJAX を使用して、更新を処理するページにデータを投稿し、結果をコールバックとして返すことができます。 http://api.jquery.com/jQuery.post/を参照してください。

他の解決策は、送信を処理した後、ユーザーをフォームのあるページに戻すことです。

3 番目の解決策は、データを同じページに送信し、そこで解析/更新することです。

于 2012-09-04T13:05:17.663 に答える