Invalid cursor state 
new370.jsp里面的错误

解决方案 »

  1.   

    应该是你这个页面上使用数据库连接的地方设置指针位置有问题。也就是Cursor。建议你将这部分代码发上来,让大家看看。应该很简单解决。
      

  2.   

    我也不知道是哪段,只好全發上來了.不好意思,因為是初學,別人的代碼看不懂......嘿嘿// 得到加班日期列表 包括假期   
    String[]  jbdate=new String[30]; 
    int jbdate_i=0;
    int thistimes=3;

    sql="select top 19  type,nos from canlen where nos<='"+date81+"'  order by  nos desc";
    rs = dba.getResults(sql);
    while(rs.next()){ 

    if(jbdate_i<thistimes){
    String _type=rs.getString("type");
    if(_type==null) _type="1";_type=_type.trim();

    if(_type.equals("1")){}
    else thistimes=thistimes+1;
    jbdate_i=jbdate_i+1;
    jbdate[jbdate_i]=rs.getString("nos");
    jbdate[jbdate_i]=jbdate[jbdate_i].trim();

    }//end jbdate<thistime
    }//end while rs = null; 
    dba.CloseStmt(); // end 得到加班日期列表
    String app1=(String)application.getAttribute("app1");
    String app2=(String)application.getAttribute("app2");
    String app3=(String)application.getAttribute("app3");
    String app_userno=(String)application.getAttribute("app_userno");
    String app_date=(String)application.getAttribute("app_date"); if(app1==null)  app1="";
    if(app2==null)  app2="";
    if(app3==null)  app3="";
    if(app_userno==null)  app_userno="";
    if(app_date==null)  app_date="";
    String s_userno=(String)session.getAttribute("uno");
    s_userno=s_userno.toUpperCase();

    // out.println(app_userno+"---"+s_userno+"***="+app_userno.indexOf(s_userno));
      if(date81.equals(app_date) && ((app_userno.indexOf(s_userno))>=0)){ if(!app1.equals("")){
    thistimes=thistimes+1;
    jbdate[thistimes]=app1;
    }

    if(!app2.equals("")){
    thistimes=thistimes+1;
    jbdate[thistimes]=app2;
    }

    if(!app3.equals("")){
    thistimes=thistimes+1;
    jbdate[thistimes]=app3;
    }
      }//endi if date81  //out.println(app_userno+"==="+s_userno); out.println("您今天可以錄入的加班日期有:");
    for(int i=1;i<=thistimes;i++)
    out.println(" "+jbdate[i]);
    //if(1==1) return; // ----  get JiaBan 's information.  detail int jb_num_i=Integer.parseInt(jb_num);
    String[][] jb=new String[501][15];  
    // 1-工號 2-姓名 3-日期 4-時間數 5-類型 6-補助 7 實際時間數 8-群 9 處 10廠部 11 課    
    // 12=time1 12=time2 

    String tem_ch="",tem_ch2="",tem_d="",tem_h="";  //get check box value
    String no_jb=request.getParameter("no_jb");
    if(no_jb==null) no_jb="";no_jb=no_jb.toUpperCase(); int jb_num_i2=0;   // get the man num in fact !
    //out.println(""+jb_num_i);
    for(int i=1;i<=jb_num_i;i++){
    tem_ch=request.getParameter("che"+i);
    tem_ch2=request.getParameter("cheZ"+i);
    if(tem_ch==null) tem_ch=""; tem_ch=tem_ch.trim();
    if(tem_ch2==null) tem_ch2=""; tem_ch2=tem_ch2.trim(); tem_d=request.getParameter("date"+i);
    tem_h=request.getParameter("hour"+i); if(tem_d==null) tem_d=""; if(tem_h==null) tem_h="";

    if(tem_ch2.equals("")){  // if20   if checkbox che2 選中的話,則可以補加班
    jb_num_i2=jb_num_i2+1;
    if(tem_ch.equals("") || tem_d.equals("") || tem_h.equals("") || (no_jb.indexOf(tem_ch)>=0)){   //if 30
    jb[jb_num_i2][1]=request.getParameter("use02"+i);
    jb[jb_num_i2][1]=jb[jb_num_i2][1].toUpperCase();
    jb[jb_num_i2][2]=request.getParameter("use03"+i);
    jb[jb_num_i2][2]=new String(jb[jb_num_i2][2].getBytes("iso-8859-1"));
    jb[jb_num_i2][3]=request.getParameter("date"+i);
    jb[jb_num_i2][4]="0";
    jb[jb_num_i2][5]="1";
    jb[jb_num_i2][6]="0";

    jb[jb_num_i2][12]=request.getParameter("time8"+i); 
    jb[jb_num_i2][13]=request.getParameter("time9"+i);
    if(jb[jb_num_i2][12]==null) jb[jb_num_i2][12]="";
    if(jb[jb_num_i2][13]==null) jb[jb_num_i2][13]="";
       jb[jb_num_i2][12]=new String(jb[jb_num_i2][12].getBytes("iso-8859-1")); }else{
    jb[jb_num_i2][1]=request.getParameter("use02"+i);
    jb[jb_num_i2][1]=jb[jb_num_i2][1].toUpperCase();
    jb[jb_num_i2][2]=request.getParameter("use03"+i);
    jb[jb_num_i2][2]=new String(jb[jb_num_i2][2].getBytes("iso-8859-1"));
    jb[jb_num_i2][3]=request.getParameter("date"+i);
    jb[jb_num_i2][4]=request.getParameter("hour"+i);
    jb[jb_num_i2][12]=request.getParameter("time8"+i); 
    jb[jb_num_i2][13]=request.getParameter("time9"+i);
    if(jb[jb_num_i2][12]==null) jb[jb_num_i2][12]="";
    if(jb[jb_num_i2][13]==null) jb[jb_num_i2][13]="";
      jb[jb_num_i2][12]=new String(jb[jb_num_i2][12].getBytes("iso-8859-1"));
    //get type
    sql="select type from canlen where nos='"+jb[jb_num_i2][3]+"'";
    rs = dba.getResults(sql);
    String jb_type1="";
    if(rs.next()) jb_type1=rs.getString("type");
    if(jb_type1==null) jb_type1="1";jb_type1=jb_type1.trim();
    rs = null; 
    jb[jb_num_i2][5]=jb_type1;
    dba.CloseStmt();
    //jb[jb_num_i2][5]=request.getParameter("type"+i);
    //get type

    jb[jb_num_i2][6]=request.getParameter("money"+i);
    }//END IF 30
    } //end if 20
    }
    session.setAttribute("ujb",jb);
    out.println("<br><font color=red>請再次確定您要登記的資料!</font>");
    //if(1==1) return;
    %>
      

  3.   

    javax.servlet.ServletException: [Microsoft][ODBC Driver Manager] Invalid cursor state
    看这句描述,应该是在你的
    rs = dba.getResults(sql);
    while(rs.next()){ }
    这个位置抛出异常的,那就是在你的dba.getResults()这个方法里出现了异常。查一下那里。