【问题标题】:Making a dropdown in jsp from a resultset in a servlet从 servlet 中的结果集在 jsp 中制作下拉菜单
【发布时间】:2013-06-15 22:02:24
【问题描述】:

我的问题是这个下拉菜单无法创建,导致 SQL 异常

我在 servlet 中的 SQL 语句如下所示:

ResultSet banks = stmt.executeQuery("SELECT * FROM DTU06.BANKS");

我的下拉菜单是在这样的 JSP 文件中创建的

<%  ResultSet banks = (ResultSet) request.getAttribute("banks"); %>
<select id="aNum" name="bank">
<%  while (banks.next()) {  %>
    <option value="${banks.getString(2)}">
        <%=banks.getString(1)%>
    </option>
<%  }   %>
</select>

我得到的错误代码如下所示:

DSRA9110E: 结果集已关闭。

任何人都可以看到问题吗?

*编辑1 我尝试在 servlet 中使用banks.next(),但我决定删除它。

【问题讨论】:

  • 你关闭了 Servlet 代码中的ResultSet 吗?而且这看起来很糟糕,你可以设置一些List作为属性。
  • “关闭 ResultSet”是什么意思?
  • ResultSet 不可序列化

标签: html sql jsp servlets html-select


【解决方案1】:

之后
ResultSet banks = stmt.executeQuery("SELECT * FROM DTU06.BANKS");
语句遍历您的ResultSetbanks.next() 然后添加到某个集合

例如

public ArrayList getResult();
{
ArrayList list = new ArrayList();
//get connection here
ResultSet banks = stmt.executeQuery("SELECT * FROM DTU06.BANKS");
while(banks.next()){
list.add(banks.getString("columnIndex"));
}
return list
}

调用此方法,然后遍历 ArrayList 并获取所需的值,即list.get("index")

【讨论】:

    【解决方案2】:

    ResultSet 不可序列化。要么实现你自己的实现 ResultSet 和 Serializable 的 MyResultSet,要么将你的结果集放入一个集合对象中并将其传递给 jsp 页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多