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");
}

我想知道我应该使用什么条件来更新同一页面中的数据。

谢谢

4

2 回答 2

4

我知道问题中的第一部分代码是 JSP update.jsp,第二部分似乎是你的 servlet,比如UpdateServlet.

所以在update.jsp每一行你都有一个<input type="text">andsubmit按钮,但<form>我认为只有一个必须在 之外<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>内容,瞧!您的 servlet 代码也可以正常工作。submitinput

  2. 您可以在同一个 JSP 中拥有两个代码块,然后使用<form>第 1 点中描述的代码片段,第二个代码片段将是:

    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(显示)和 Servlet(更新代码)。
    这可能需要更多的努力,但您将学习 Ajax,并且会更接近现实世界。
    到目前为止, jQuery ajax是最简单易用的。

注意:
仅作记录,我知道您可能正在练习,但如果您打算在实际项目中使用它,请提前阅读。

在 JSP 中使用 scriptlet是一种不好的做法(除非确实需要,而且如果它用于视图级逻辑而不是业务或数据级逻辑),更糟糕的是在 JSP 中使用JDBC代码。因此,如果您能听从 f_puras 的建议,那就太好了。

如果你想知道我为什么要听你不请自来的建议,那么这里有一些值得深思的地方:

希望这可以帮助。

于 2012-09-04T15:39:34.990 回答
0

您可以使用 AJAX 将数据发布到处理更新的页面,然后将结果作为回调返回,请参阅http://api.jquery.com/jQuery.post/

其他解决方案是在处理提交后将用户转发回带有表单的页面。

第三种解决方案是将数据提交到同一页面并在那里解析/更新。

于 2012-09-04T13:05:17.663 回答