0

こんにちは、jdbc テーブルを更新しようとすると、最初の行のみが更新されます。以下はそのコードです。私はすべての行に個別のボタンを持っていますが、クリックしたボタンは最初の行として入力値を取ります。

<tr>
           <td><%=rs.getString("DBID")%></td>
           <td><input type="text" name="prev" id="prev" value="<%=rs.getString("Query_Raised")%>" border=''></td>
           <td><%=rs.getString("TR")%> </td>
           <td><%=rs.getString("Query_Answered")%></td>
           <td><%=rs.getString("TA")%></td>
           <td><input type="submit" value="Edit">
       </tr>

そして比較のために私は以下を使用しました(where条件のために)そしてそれはまた最初の行の値だけを取ります

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body><form method="post" action="Up_Query_DB.jsp">
        <table><tr><td> <input type="text" id="xyz" name="xyz" value="<%=request.getParameter("prev")%>"></td></tr>
            <tr><td><INPUT TYPE="TEXT" NAME="updat" id="updat"></td></tr>
            <tr><td><input type="submit" value="Update"></td></tr></table></form>
</body>

そして、私が使用したアップデートは

<% try
                 {
   String sc=request.getParameter("xyz");
   String upd=request.getParameter("updat");
   ps=con.prepareStatement("Update Scope1 Set Query_Raised='"+upd+"' where Query_Raised='"+sc+"'");
   int i=ps.executeUpdate();
   if(i==1)
                 {
       String redirectURL= "View Queries.jsp";
       response.sendRedirect(redirectURL);

   }
         else{
       out.print("Erro");
         }
 }
   catch(Exception e)
                   {
    out.println("error");

   }%>

ありがとう

4

1 に答える 1

3

1) 有効な HTML を書くのに役立ちます
<td><input type="submit" value="Edit"></td>
2) すべての行に [編集] ボタンがありますが、フォームを送信するときに実際にどのボタンが押されたかを知る方法はありません - それらはすべて同じです。
複数行編集を実装する最も一般的な方法は、行ごとに個別のフォームを用意することです。複数の行を編集して一度にすべての変更を送信できるようにしたい場合を除き、その場合、データ入力フィールドに一意の名前を付けて、行のデータを区別する必要があります。

後で編集:
3) 変更しようとしている値に基づいてテーブルの行を更新することは、さまざまな理由で悪い考えです。そのうちの 1 つは、クエリが存在すら知らなかった行を更新する可能性があることです。

<tr>
<form ... >
<td> <input type="hidden" name="recordID" value="%dynamicRecordIDFromYourDB%" /> </td>
...
<td> <input type="text" name="data" value="%updatableDataFromYourDB" />
<td> <input type="submit" ... />
</form>
</tr>

上記のコードは、単一行更新オプションに共通です。次に、更新 SQL は次のようになります。

sqlString = "Update tableName Set updatableFiled ='" + data + "' where recordID = " + recordID;
于 2012-09-05T10:02:13.943 に答える