日期:2014-05-20  浏览次数:20654 次

java中if()判断
if   ( "0 ".equals(conn.execute( "select   datediff(dd,   max(sdate),   getdate())   from   songinfo "))){
System.out.println( "11111111111111 ");
}
else{
conn.executeUpdate( "update   songinfo   set   dayhit=1 ");
System.out.println( "*********** ");
}

“select   datediff(dd,   max(sdate),   getdate())   from   songinfo”在查询分析器中的结果是0;

按道理说应该出来111111111111111,但结果是*************


------解决方案--------------------
ResultSet 集合返回是一般SQL结果,更新返回影响行数。
集合和零比较亏你想的出来!

请多看看书!!少提问!
------解决方案--------------------
你应该用ResultSet来获取查询结果,conn.execute()的返回结果当然不是字符串,它是ResultSet
ResultSet rs=null;
rs=conn.execute( "select datediff(dd, max(sdate), getdate()) as difference from songinfo ");
if( "0 ".equals(rs.get( "difference "))){
System.out.println( "11111111111111 ");
}
else{
conn.executeUpdate( "update songinfo set dayhit=1 ");
System.out.println( "*********** ");
}


你那个代码结构太乱了,
------解决方案--------------------
应该用0 == ...而非 "0 ".equals

后者会被JDK 1.5之后的编译器等同于:
"0 ".equals(Integer.valueOf(...))

所以肯定不相等
------解决方案--------------------
我真的是服了你了, "0 "字符串,怎么和一个集合比较呢??它的返回类型不是一个字符串哈,哎,这肯定不会打印得出来嘛!我来给你改改:

String sql=( "select datediff(dd, max(sdate), getdate()) from songinfo ");
ResultSet rs=null;
rs=conn.execute(sql);

if (rs==null){
System.out.println( "11111111111111 ");
}
else{
conn.executeUpdate( "update songinfo set dayhit=1 ");
System.out.println( "*********** ");
}