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)基于您打算更改的值更新表行是一个坏主意,其中一个原因是您的查询可能会更新您从未知道甚至存在的行。

<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 回答