编辑和更新相同的文本框

时间:2012-09-04 12:59:51

标签: java jsp jdbc

我有一个数据库表,我可以编辑一个值。我想更新相同的内容,下面是我尝试过的代码。

表格代码如下

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

我想知道我应该用于更新同一页面数据的条件。

由于

2 个答案:

答案 0 :(得分:4)

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

因此,在update.jsp的每一行中,您都有一个<input type="text">submit按钮,但我认为<form>只有一个必须在{{1}之外所以这里是我的解决方案(选择任何一个):

  1. 为每行使用多个<table>标记,例如

    <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并且瞧!你的servlet代码也可以正常工作。

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

    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. 使用ajax和其他javascript DOM操作方法完成此操作,如Endy所述。
    为此,您需要有JSP(显示)&amp; Servlet(更新代码)。
    这可能需要更多努力,但您将学习Ajax并且将更接近现实世界 到目前为止jQuery ajax是最简单的使用方式。

  4. 注意:
    只是为了记录,我知道你可能正在练习,但如果你打算在一个真实的项目中使用它,那么请提前阅读。

    在JSP中使用scriptlet是一种 糟糕的做法 (除非真的需要,如果是视图级逻辑而不是业务或数据级别,那也是如此)逻辑)甚至 更糟 是在JSP中使用JDBC代码。如果你能跟随f_puras的advice,那将会非常棒。

    如果您想知道为什么我应该听取您未经请求的建议,那么这里有一些值得思考的问题:

    希望这有帮助。

答案 1 :(得分:0)

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

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

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