我有一个数据库表,我可以编辑一个值。我想更新相同的内容,下面是我尝试过的代码。
表格代码如下
<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");
}
我想知道我应该用于更新同一页面数据的条件。
由于
答案 0 :(得分:4)
我理解问题中的第一个代码部分是JSP update.jsp
,第二部分似乎是你的servlet,比如说UpdateServlet
。
因此,在update.jsp
的每一行中,您都有一个<input type="text">
和submit
按钮,但我认为<form>
只有一个必须在{{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代码也可以正常工作。
您可以在同一个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>
使用ajax和其他javascript DOM操作方法完成此操作,如Endy所述。
为此,您需要有JSP(显示)&amp; Servlet(更新代码)。
这可能需要更多努力,但您将学习Ajax并且将更接近现实世界
到目前为止jQuery ajax是最简单的使用方式。
注意:强>
只是为了记录,我知道你可能正在练习,但如果你打算在一个真实的项目中使用它,那么请提前阅读。
在JSP中使用scriptlet是一种 糟糕的做法 (除非真的需要,如果是视图级逻辑而不是业务或数据级别,那也是如此)逻辑)甚至 更糟 是在JSP中使用JDBC
代码。如果你能跟随f_puras的advice,那将会非常棒。
如果您想知道为什么我应该听取您未经请求的建议,那么这里有一些值得思考的问题:
希望这有帮助。
答案 1 :(得分:0)
您可以使用AJAX将数据发布到处理更新的页面,然后将结果作为回调返回,请参阅http://api.jquery.com/jQuery.post/。
其他解决方案是在处理完提交后将用户转发回包含该表单的页面。
第三种解决方案是将数据提交到同一页面并在那里解析/更新。