嗨当我正在尝试更新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");
}%>
由于
答案 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;