2013-06-19 42 views
0

我的問題是,這個下拉菜單不能進行,SQL異常的原因在一個servlet使JSP中下拉從ResultSet

在servlet我的SQL語句如下所示:

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

而我的下拉是這樣

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

錯誤代碼,我得到JSP文件中創建看起來像這樣:

DSRA9110E:ResultSet已關閉。

任何人都可以看到問題?

* EDIT1 我試着玩玩servlet中的banks.next(),但我決定刪除它。

+0

你關閉了Servlet代碼中的ResultSet嗎?而且這看起來很糟糕,你可以設置一些'List'作爲屬性。 – NINCOMPOOP

+0

你是什麼意思「關閉ResultSet」? – Anonymous

+0

ResultSet不可序列化 – chetan

回答

0

ResultSet不可序列化。既可以實現你自己的實現ResultSet和Serializable的MyResultSet,也可以將你的結果集放到一個集合對象中並傳遞給jsp頁面。

0


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")

得到