先说明一下:
从balance_all_info表 得到balance_index;接下来有 balance_conf,balance_voip两周功能的卡,这两种卡的总的消费信息在balance_all_info表中,
                                        若由balance_index查询到conf_index则由conf_index 查询 balance_conf_account卡的信息,
                                        若由balance_index查询到voip_index则由voip_index 查询 balance_voip_account卡的信息,
                               但结果集是这两个表的汇总(mysqlres和mysqlsubres)。         这下面的程序有没有问题啊,一直得不到我想要的值。还有把这结果集分段显示怎么弄啊。我到时候要分页显示。
网高手朋友不吝赐教。小弟不胜感激之至!
int totalshiyongminxicount;
public int startqueryshiyongminxi(int skipnum,String cardaccount,  String starttime,String endtime) 
{
int ret=domysqlconn();

if (ret!=0)
{
return -100;


try{
  
String balance_all_query="select balance_index from balance_all_info where card_index="+cardaccount;
substmt=mysqlconn.createStatement();
subres=substmt.executeQuery(balance_all_query);
 
while(subres.next()){
int balanceindex=subres.getInt(1);
    
String querybalance_conf="select conf_index from balance_conf where balance_index="+balanceindex;
substmtof1=mysqlconn.createStatement();
subresof1=substmtof1.executeQuery(querybalance_conf);
    
String querybalance_voip="select voip_index from balance_voip where balance_index="+balanceindex;
substmtof2=mysqlconn.createStatement();
subresof2=substmtof2.executeQuery(querybalance_voip); if(subresof1.next()){
   int confindex=subresof1.getInt(1);
   totalshiyongminxicount++;
   System.out.println(confindex+"sccoooZZZZZZccs");
    
   String subquery1="from balance_conf_account where conf_index="+confindex+" and start_time>'"+starttime+"' and start_time<'"+endtime+"' and end_time!='0000-00-00 00:00:00'";
   String Aquerysql="select card_index,start_time,member_count,sec_to_time(unix_timestamp(end_time)-unix_timestamp(start_time)),'balance_conf_account'  "+subquery1;
   mysqlres=mysqlstmt.executeQuery(Aquerysql);
   
   mysqlsubstmt=mysqlconn.createStatement();
   String querysqlss="select member_number from conf_join_member where conf_index="+confindex;
   mysqlsubres=mysqlsubstmt.executeQuery(querysqlss);
}
if(subresof2.next()) {
   int voipindex=subresof2.getInt(1);
   System.out.println(voipindex+"6666666666");
   
   totalshiyongminxicount++;
   String subquery2="from balance_voip_account where voip_index="+voipindex+" and start_time>'"+starttime+"' and start_time<'"+endtime+"' and end_time!='0000-00-00 00:00:00'";
   String Bquerysql="select card_index,start_time,member_count,sec_to_time(unix_timestamp(end_time)-unix_timestamp(start_time)),'balance_voip_account'  "+subquery2;
   mysqlres=mysqlstmt.executeQuery(Bquerysql);
   
   mysqlsubstmt=mysqlconn.createStatement();
   String querysqlss="select member_number from voip_join_member where voip_index="+voipindex;
   mysqlsubres=mysqlsubstmt.executeQuery(querysqlss);
  
}
} System.out.println(totalshiyongminxicount+ "BBBBHPPPPPPPPPHBBBBB");
 
ret=0;
}catch (Exception e){
System.out.println("Errorss:"+e.toString());
e.printStackTrace();
ret=-10;
}

return ret;
}

解决方案 »

  1.   

    这代码看起来真是费劲。你能不能把查询sql封装成DAO啊。(主张你用Ibits或者Hibernate)
    一般在循环中注意Statement是新创建出来的。
    我给你的建议:
    1.把SQL封装,然后通过参数传过去,返回的是对象列表。看看每个SQL是不是能正常的返回你期望的结果。
    2.如果两个List返回的都没有问题。再用一个List把返回的两个List连起来。
      

  2.   

    接下来有 balance_conf,balance_voip两周功能的卡
    是两种功能的卡
      

  3.   

    看起来确实挺费劲的.
    String querysqlss="select member_number from conf_join_member where conf_index="+confindex; 
    String querysqlss="select member_number from voip_join_member where voip_index="+voipindex; 
    这两句是不是要写成:
    String querysqlss="select member_number from conf_join_member where conf_index='"+confindex+"'"; 
    String querysqlss="select member_number from voip_join_member where voip_index="+voipindex+"'";
      

  4.   

    我手下如果有人敢把代码写成这样,一定要拉出去tjjtds