如何在jsp的while循环中从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

iam使用while循环从数据库中检索数据,然后将其以表格格式输出,如下面所示,以及while循环中包含select标记的列,现在select标记的选项为;(挂起并清除),在选择时,我希望使用它来更新相应的数据库表,但问题是,当我按下更新按钮时,它会更新所有值,而不是特定选择的.plz帮助

html代码

<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代码的方式也远远不够高效,而且对资源泄漏非常敏感。要了解如何以正确的方式完成基本任务,您可能会发现有用的信息