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( "*********** ");
}