我从数据库中读取数据,如下:
<td height="31" class="STYLE2"><div align="center"  style="text-decoration:none"><%=NullToSpace.getNullcheck(rs.getString(1))%>&nbsp;</div></td>
这样得到的数据格式是:2008-12-08 10:26:00.0
如果用这样的语句读取数据,如下:
<td height="31" class="STYLE2"><div align="center"  style="text-decoration:none"><%=(NullToSpace.getNullcheck(rs.getString(1))).substring(0,19)%>&nbsp;</div></td>
这样得到的数据格式是:2008-12-08 10:26:00
但是如果中间有读不到的数据(数据库中要读取的数据没有采集到,数据库中有一行为空)就会运行出错!!!
诸位大侠有何妙法??
谢谢

解决方案 »

  1.   

    记录为空的话,substring(0,19)函数无法截取第0-19个字符串,会报错的
      

  2.   

    时间格式 用jstl的fmt标签就可以搞定了 不需要截取字符串的
    <fmt:formatDate value="<%=NullToSpace.getNullcheck(rs.getString(1))%>" type="both"/>
    2008-12-08 10:26:00 
      

  3.   

    我把<td height="31" class="STYLE2"> <div align="center"  style="text-decoration:none"> <%=NullToSpace.getNullcheck(rs.getString(1))%>&nbsp; </div> </td> 
    换成了
    <td height="31" class="STYLE2"> <div align="center"  style="text-decoration:none"> <fmt:formatDate value=" <%=NullToSpace.getNullcheck(rs.getString(1))%>" type="both"/> &nbsp; </div> </td> 
    却读不到数据了!!!
    (我是菜鸟)
    再指点一下! !!
    谢谢!!
      

  4.   

    你会不会在在显示前先加个判断?<%if(..==null) ...%>如果为空,就显示空格!
      

  5.   

    五楼的同胞:
    我把<td height="31" class="STYLE2"> <div align="center"  style="text-decoration:none"> <%=NullToSpace.getNullcheck(rs.getString(1))%>&nbsp; </div> </td> 
    改为:<%if(NullToSpace.getNullcheck(rs.getString(29))==null){%>
      <td class="STYLE2"><div align="center">&nbsp; </div></td>
      <%}else{%>
      <td class="STYLE2"><div align="center"><%=(NullToSpace.getNullcheck(rs.getString(29))).substring(0,19)%> &nbsp; </div></td><%}%>
    结果与
    <td height="31" class="STYLE2"> <div align="center"  style="text-decoration:none"> <%=(NullToSpace.getNullcheck(rs.getString(1))).substring(0,19)%>&nbsp; </div> </td>
    的运行结果一致
    不知道是什么地方的错误!!
      

  6.   

    有两个方案:
    方案一是:把数据库里的时间类型换成:varchar类型,收集到的数据格式固定2008-12-08 10:26:00,里面出现空格的也当成一个字符
    下面截取时,你就这样截取:
    int x=Integer.parseInt(s.substring(0,4));//年
    int y=Integer.parseInt(s.substring(5,7));//月
    int z=Integer.parseInt(s.substring(8,10));//日
    int a=Integer.parseInt(s.substring(11,13));//时
    int b=Integer.parseInt(s.substring(14,16));//分
    int c=Integer.parseInt(s.substring(17,19));//秒方案二你用一个函数,把里面每个字符取出来
    例如:我把当前的时间
    import java.text.SimpleDateFormat; 
    import java.util.Date;public class Test7 {
     public   static   void   main(String   args[])     
         {   
     SimpleDateFormat   format   =   new   SimpleDateFormat("yyyy-MM-dd hh:mm:ss");   
     Date   date   =   new Date();   
     String timestring = format.format(date);
     
     String[] dates = timestring.split(" ");
     
     String[] days = dates[0].split("-");
     String[] sencds = dates[1].split(":");
     
     System.out.println(timestring);
     System.out.println(days[0]);  
     System.out.println(days[1]); 
     System.out.println(days[2]);
     
     System.out.println(sencds[0]);
     System.out.println(sencds[1]);
     System.out.println(sencds[2]);
     
         }   }
      

  7.   

    补充一下,我前不就用jfreechart做曲线图表时,也遇到过象楼主一样的问题,我是用方案一来实现的.但是方案二也能实现的.希望上面点点想法对楼主有帮助!
      

  8.   


    你 NullToSpace.getNullcheck 这个方法不是想把值如果是null的转成"" 这个吗
    你 if(NullToSpace.getNullcheck(rs.getString(29))==null) 这样判断,那肯定不成立,又跑到else里面
    再 substring 肯定错啦,你上面直接判读  if(rs.getString(29)== null) 就好了吧
      

  9.   

    同意楼上的,说实话,你的jsp写的实在是让人晕呀!不能这样写呀,呵呵!
      

  10.   

    在SQL里面把时间处理成字符串格式。