sql = "SELECT SUM(p.process_money * i.sign) FROM fbs_budget_process p,fbs_item i "
+ " WHERE i.code=p.item_code "
+ " AND instr(p.item_code,'"+item_code+"',1,1)=1"
+ " AND p.enrol_date>=? AND p.enrol_date<?  AND p.id!=? "
+ sql
+ sqlPayeeName;
PreparedStatement ps = con.prepareStatement(sql);
ps.setDate(1, this.beginDate == null ? begin_date : this.beginDate);
ps.setDate(2, this.endDate == null ? end_date : this.endDate);
ps.setInt(3, excepid);
ResultSet rs = ps.executeQuery();
if (rs != null && rs.next()) {
System.out.println("process_money = " + rs.getDouble(1)); //结果为0.0
}这段代码,已经执行if语句了,而且我调试也把sql语句拷贝到数据库中执行有数据
为什么我在程序中却取不到,为题很怪,请帮忙解决

解决方案 »

  1.   

    跟踪一下参数beginDate, endDate, excepid喵~``
      

  2.   

    if (rs != null && rs.next()) { 
    把&&改为||试试
      

  3.   

    修改这个&&有可能会报异常的.
      

  4.   

    我的最大疑点就是你的sql语句和附加的值,好好的查这两个地方好了!
      

  5.   

    if执行了 那应该就是PreparedStatement 下面这几行的错了
      

  6.   

    if语句没错 我试过可以得到数据   就应该是你PreparedStatement 放的参数
    PreparedStatement ps = con.prepareStatement(sql); 
    ps.setDate(1, this.beginDate == null ? begin_date : this.beginDate); 
    ps.setDate(2, this.endDate == null ? end_date : this.endDate); 
    ps.setInt(3, excepid); 有问题把
      

  7.   

    ResultSet rs = ps.executeQuery(); 
    rs.beforeFirst();
    if (rs.next()) { 
    System.out.println("本来就有数据,自己就做了一条怪谁呢????"); 
    }
     
    if (rs != null && rs.next()) { 
    System.out.println("process_money = " + rs.getDouble(1)); //结果为0.0 
      

  8.   

    ResultSet rs = ps.executeQuery(); 
    rs.beforeFirst();
    if (rs.next()) { 
    System.out.println("本来就有数据,自己就做了一条怪谁呢????"); 
    }
     
    if (rs != null && rs.next()) { 
    System.out.println("process_money = " + rs.getDouble(1)); //结果为0.0 
      

  9.   

    我没用rs.beforeFirst(); 也能取道第一行啊  
      

  10.   

    貌似8楼有道理喵~```
    if (rs != null ) 

      System.out.println("process_money = " +  rs.next()); //再跑跑看呢?