JDBC表仅更新第一行

时间:2012-09-05 09:41:05

标签: jsp jdbc

嗨当我正在尝试更新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");

   }%>

由于

1 个答案:

答案 0 :(得分:3)

1)有助于编写有效的HTML
<td><input type="submit" value="Edit"></td>
2)即使每行都有一个编辑按钮,在提交表单时也无法知道哪些按钮实际按下了 - 它们都是相同的。
实现多行编辑的最常用方法是为每行创建单独的表单。除非您希望能够编辑多行,然后一次提交所有更改,否则您需要区分行&#39;数据 - 通过为您的数据输入字段提供唯一的名称。

稍后编辑:
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;