如何在jsp的while循环中从html选择标记中识别特定的名称属性
iam使用while循环从数据库中检索数据,然后将其以表格格式输出,如下面所示,以及while循环中包含select标记的列,现在select标记的选项为;(挂起并清除),在选择时,我希望使用它来更新相应的数据库表,但问题是,当我按下更新按钮时,它会更新所有值,而不是特定选择的.plz帮助 html代码如何在jsp的while循环中从html选择标记中识别特定的名称属性,jsp,jdbc,Jsp,Jdbc,iam使用while循环从数据库中检索数据,然后将其以表格格式输出,如下面所示,以及while循环中包含select标记的列,现在select标记的选项为;(挂起并清除),在选择时,我希望使用它来更新相应的数据库表,但问题是,当我按下更新按钮时,它会更新所有值,而不是特定选择的.plz帮助 html代码 <tr> <td width=50><div align="center"><%=datez%></div></td&g
<tr>
<td width=50><div align="center"><%=datez%></div></td>
<td width=50><div align="center"><%=cashrecid%></div></td>
<td width=50><div align="center"><%=fname%></div></td>
<td width=50><div align="center"><%=lname%></div></td>
<td width=50><div align="center"><%=cashout%></div></td>
<td width=50><div align="center"><%=purpose%></div></td>
<td width=50><div align="center"><%=project%></div></td>
<td width=50><div align="center">
<select name="select" size="1" id="select">
<option value="pending">pending</option>
<option value="cleared">cleared</option>
</select>
</div></td>
</tr>
悬而未决的
变明朗
jsp代码
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%! public int cashrecid; %>
<%
String uname=(String)session.getAttribute("theName");
String status=request.getParameter("select");
Connection con1=DriverManager.getConnection("jdbc:odbc:pettyz","sa","pass@word");
PreparedStatement stmt1=con1.prepareStatement("select cashrecid from cashrequisitions where status='pending' ");
ResultSet rs1=stmt1.executeQuery();
while(rs1.next()) {
cashrecid=rs1.getInt(1);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:pettyz","sa","pass@word");
PreparedStatement stmt=con.prepareStatement("update cashrequisitions set status=? where cashrecid=?");
stmt.setString(1,status);
stmt.setInt(2,cashrecid);
stmt.executeUpdate();
}
rs1.close();
stmt1.close();
con1.close();
%>
我不理解实际的问题/要求 但至少我可以看到以下内容:您的第一个SQL查询正在从数据库中检索状态为“待定”的所有现金申请。您的第二个查询将获得的现金申请的所有状态更新为所选值。因此,如果选择“挂起”,实际上什么都不会改变。但如果选择“清除”,实际上所有内容都将设置为“清除”。您将没有状态为“待定”的行。进一步说,
uname
变量有点不稳定
您不需要在第一次查询中使用uname
?功能需求到底是什么?您是否只想更改特定uname
的状态,它也是现金申请表的一列?如果是这样,您需要将这两个SQL查询替换为:
preparedStatement = connection.prepareStatement("UPDATE cashrequisitions set status=? where uname=?");
preparedStatement.setString(1, status);
preparedStatement.setString(2, uname);
此查询将使用指定的uname
将所有现金申请的状态有效更新为指定的状态值。如果您在SQL方面有困难(看起来是这样),我可以向您推荐这个基本的
也就是说,您的代码有点。。UH不寻常。您通常在Java类中编写Java代码,而不是在JSP文件中。忽略那些老式的90年代教程。非常不鼓励使用Scriptlet。编写JDBC代码的方式也远远不够高效,而且对资源泄漏非常敏感。要了解如何以正确的方式完成基本任务,您可能会发现有用的信息