2013-08-27 3 views
0

초보자입니다. 내 프로젝트에서 나는 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

scripplets를 사용하지 마십시오. 그리고 오류를 게시하십시오. –

+1

'fetchqn (int) '메소드로's' 란 무엇입니까? 그게 문제가있는 곳이 겠지요. – MrLore

+0

데이터베이스 쿼리가 작성된 java 페이지에 대해 작성된 오브젝트 – Salini

답변

1

나는 그것을 풀었다. 문제는 Statement 객체 당 하나의 ResultSet 객체 만 동시에 열 수 있다는 것입니다. 그 때문에, 1 개의 ResultSet 객체의 read가 다른 것의 read와 인터리브되고있는 경우, 각각은 다른 Statement 객체에 의해 생성되지 않으면 안됩니다. Statement 인터페이스의 모든 실행 메소드는 열려있는 Statement의 현재 ResultSet 오브젝트를 암시 적으로 닫습니다. 다른 진술을 사용함으로써 그렇게 해결할 수 있습니다.

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> 
<% 
     } 
%> 
  • 또한 당신이 결과 집합에서 데이터를 가져 오기 위해 올바른 열 이름을 사용하고 있는지 확인합니다.
  • 결과 집합과 db 연결을 사용한 후에는 올바르게 닫아야합니다. 마지막으로

,

  • 당신이 뭔가 새로운 것을 구축하는 경우 scriplets을 사용하지 않도록하십시오.
+0

또한 처음 while 루프에서 오류가 발생하는 동안 (rs.next()) – Salini

+0

@Salini ** 질문 **을 편집하고 게시 된 예외의 스택 추적을 게시하면 좋을 것입니다. 'ResultSet rs = s.fetchtask (userid);' –

관련 문제