public void uishow1()throws Exception
   {
      dbConn = DriverManager.getConnection("jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=./db.mdb","","");
      Statement stmt = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
      int b = 0;
      model = new MyTableModel_Mold();
      String s1[] = {
          "项目", "数量", "原值", "残值", "净值", "原值占有率", "净值占有率"};
      while (b < s1.length) {
        model.addColumn(s1[b]);
        b++;
      }
     Statement stmt1 = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
     Statement stmt2 = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
     ResultSet rsd=stmt2.executeQuery("select sum(p_value) as value2 from property");
     rsd.next();
     double valuee=rsd.getDouble("value2");
     String sql = "select * from rtype";
     ResultSet rs = stmt1.executeQuery(sql);     while (rs.next()) {
       Vector newRow = new Vector();
       int c = 1;
       String s=null;
       double valueshow=0;
       double valueshow1=0;
       double f=0 ;
       double s2=0;
       double ss=0;       String tid1=rs.getString("t_id");
       int tid=Integer.parseInt(tid1);
       while (c <= 7) {
         if(c==1)
         {
             s = rs.getString("t_type");
         }
         else if(c==2)
         {
             rsp = stmt.executeQuery("select sum(p_shuliang) as shuliang from property where add_property="+tid);
             rsp.next();
             s=rsp.getString("shuliang");
         }
         else if(c==3)
         {
           rsp = stmt.executeQuery("select sum(p_value) as value1 from property where add_property="+tid);
           rsp.next();
           s=rsp.getString("value1");
         }
         else if(c==4)
         {
           rsp = stmt.executeQuery("select sum(p_nowvalue) as nowvalue from property where add_property="+tid);
           rsp.next();
           s=rsp.getString("nowvalue");
         }
         else if(c==5)
         {
           Statement stmt4 = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
           ResultSet rs4 = stmt4.executeQuery("select  sum(p_value) as pvalue  from property where add_property="+tid);
           Statement stmt5 = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
           ResultSet rs5 = stmt5.executeQuery("select mid(p_out,1,4) as out,one from property where add_property=" +tid+" and one<>0");
        //    rs5.next();
           double m = 0;
           double n = 0;
           GregorianCalendar g = new GregorianCalendar();
           rs4.next();
           f = Double.parseDouble(rs4.getString("pvalue"));
           rs4.previous();
           while (rs4.next())
           {
             double one=0;
             int i=0;
             if(rs5.next())
             {
               one = Double.parseDouble(rs5.getString("one"));
               i = Integer.parseInt(rs5.getString("out"));
             }
              
             int year = (int) g.get(Calendar.YEAR);
             m = m + (year - i) * 12 * one;
             n = n + one;
         }
           s = (f - m - n) + "";
           ss=Double.parseDouble(s);
         }
         else if(c==6)
        {
           rsp = stmt.executeQuery("select sum(p_value) as value4 from property where add_property="+tid);
           rsp.next();
           valueshow=rsp.getDouble("value4");
           valueshow1=valuee;
           s=valueshow/valueshow1*100+"%";
        }
        else if(c==7)
        {
                 Statement stmt4 = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                 ResultSet rs4 = stmt4.executeQuery("select  sum(p_value) as valuew  from property");
                 Statement stmt5 = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                 ResultSet rs5=stmt5.executeQuery("select mid(p_out,1,4) as out,one from property  where one<>0");
              //  rs5.next();
                  double m=0;
                  double n=0;
                  int mouth=0;
                  int i=0;
                  GregorianCalendar g = new GregorianCalendar();
                  rs4.next();
                 f = Double.parseDouble(rs4.getString("valuew"));
                 rs4.previous();
                 while(rs4.next()){                  if(rs5.next())
                  {
                    i = Integer.parseInt(rs5.getString("out"));                  int year = (int) g.get(Calendar.YEAR);
                  m = m + (year - i) * 12 * Double.parseDouble(rs5.getString("one"));
                     n = n + Double.parseDouble(rs5.getString("one"));
                 }
                }
                  s2= (f - m - n);
                 s=ss/s2*100+"%";        }         newRow.addElement(s);
         c++;
       }
       model.addRow(newRow);     }      jTable1.setModel(model);
   }
  one = Double.parseDouble(rs5.getString("one"));        只要往数据库添加记录 就显示无效游标状态

解决方案 »

  1.   

    ResultSet rs5 = stmt5.executeQuery("select mid(p_out,1,4) as out,one from property where add_property=" +tid+" and one<>0");
    你用是什么数据库啊
    mid(p_out,1,4)取的时候 是不是固定的取4 个的啊?  是不是错误了?  如果错了就没结果集 游标自然就报错了
      

  2.   

    mid函数只是在access里有的把  其他的貌似 没这个函数的把   
    你是不是用错了?