我是初学者。在我的项目中,我使用的是Java和Mysql。在做代码时我遇到了错误。该代码在下面提到
<%
ResultSet rs=s.fetchtask(userid);
while(rs.next())
{
%>
<table border="1">
<tr><td>
<% int qnid=(rs.getInt("question_id"));
ResultSet rs1=s.fetchqn(qnid);
String qn=rs1.getString("question");
%>
<% out.println(qn);%>
</td></tr>
</table>
<%
}
%>
但是当我没有使用第二次获取它的工作
<%
ResultSet rs=s.fetchtask(userid);
while(rs.next())
{
%>
<table border="1">
<tr><td>
<% int qnid=(rs.getInt("question_id"));
%>
<% out.println(qnid);%>
</td></tr>
</table>
<%
}
%>
当我使用此代码时,没有问题。请有人帮帮我显示的错误是
org.apache.jasper.JasperException: An exception occurred processing JSP page /setter.jsp at line 142
139: // ResultSet rs1 = st.executeQuery("SELECT * FROM temp_qb WHERE question_id="+qnid+"");
140: ResultSet rs1=s.fetchqn(qnid);
141: // ResultSet rs1=s.fetchqn(qnid);
142: String qn=rs1.getString("question");
143: %>
144: <% //out.println(qn);
145: %>
答案 0 :(得分:1)
我已经解决了。问题是每个Statement对象只能同时打开一个ResultSet对象。因此,如果读取一个ResultSet对象与另一个ResultSet对象的读取交错,则每个ResultSet对象必须由不同的Statement对象生成。 Statement接口中的所有执行方法都隐式关闭一个statment的当前ResultSet对象(如果存在一个open对象)。通过使用另一个声明,它可以解决。
答案 1 :(得分:0)
如果继续这么少,我建议你尝试一下,看看你是否仍然得到同样的错误。
<%
ResultSet rs=s.fetchtask(userid);
while(rs.next())
{
%>
<table border="1">
<tr><td>
<% int qnid=(rs.getInt("question_id"));
ResultSet rs1=s.fetchqn(qnid);
while(rs1.next())
{
String qn=rs1.getString("question");
out.println(qn);
}
%>
</td></tr>
</table>
<%
}
%>
最后,