问题的详细说明如下:
首先读取数据库中表的行数,隔一段时间后再读一次,如果两次读取的值相同则没有任何反映,如果读取的值不相同,就返回一个值。
也就是说,要判断数据库中是否插入一行,
我编写了如下程序,运行时没有报错,但是没有任何反应
protected void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {        
            //设置输出信息的格式及字符集           
   String sql1="select count(*) from userinfo1";
    try{
     Thread.sleep(5000); }
     catch(Exception ep){
      System.out.println("Data source Error");     
     }
   String sql2="select count(*) from userinfo1 ";
   if(sql1.equals(sql2)){
     sql=1;
    }
  response.setContentType("text/xml;charset=UTF-8");
          response.setHeader("Cache-Control","no-cache");
          //创建输出流对象
          PrintWriter out = response.getWriter();
          //依据验证结果输出不同的数据信息
          out.println("<response>");              
        out.println("<count>" + (sql) + "</count>");
        out.println("</response>");
          out.close();
    }
    public String departInTimeInfo(String sql)
    {
      String Xmlshow="";
     try{
          rs=st.executeQuery(sql);
if (rs.next())
{
            Xmlshow=Xmlshow+sql;         
          }       
         }
        catch(Exception e) {}
        return Xmlshow;         
    }   
    public void destroy()
    {
      try{
      if (rs!=null) rs.close();
       if (st!=null) st.close();
       if (conn!=null) conn.close();
       }
       catch(Exception e){}
     } 
}
我是菜鸟,希望各位大侠帮忙

解决方案 »

  1.   

    你比较sql字符串有什么用,应该比较返回的结果啊,大概就是下面的样子
    String sql="select count(*) from userinfo1";
    int preCount=-1;
        try{
        Thread.sleep(5000); }
        catch(Exception ep){
        System.out.println("Data source Error");    
        }
      ;
      response.setContentType("text/xml;charset=UTF-8");
              response.setHeader("Cache-Control","no-cache");
              //创建输出流对象
              PrintWriter out = response.getWriter();
              //依据验证结果输出不同的数据信息
              out.println(" <response>");             
            out.println(" <count>" + curCount + " </count>");
            out.println(" </response>");
              out.close();
        }
        public String departInTimeInfo(String sql)
        {
        String Xmlshow="";
        try{
              rs=st.executeQuery(sql);
    if (rs.next())
    {
                int curCount = rs.getInt(1);
                if (curCount!=preCount) {
                   Xmlshow=Xmlshow+curCount;
                   preCount=curCount;
                }
                       
              }     
            }
            catch(Exception e) {}
            return Xmlshow;       
        }  
      

  2.   

    int preCount=-1;
    int curCount = rs.getInt(1);
    这个地方不太明白
      

  3.   

    你怎么能比较sql1和sql2呢,不管这两条语句执行不执行,他们代表的就是你写的那两条sql语句(字符串),不是运行结果.
    int curCount = rs.getInt(1); 
    这句是得到查询出的记录条数,也就是说数据库里符合你查询语句的条数.
    没有必要写上两条相同的sql语句,你可以对这条语句执行两次.curCount1和curCount2得到两次查询出的记录数,然后比较curCount1和curCount2,看看是否有新数据插入了.
      

  4.   

    因为我们先定义一个变量preCount=-1,
    因为首次查询int curCount = rs.getInt(1); 的返回值是大于等于0的,
    然后在后面进行比较
                int curCount = rs.getInt(1);
                if (curCount!=preCount) {
                   Xmlshow=Xmlshow+curCount;
                   preCount=curCount;
                }
    第一次肯定不相等,所以执行IF语句,然后curCount的值赋给preCount,进行下一次比较
      

  5.   

     if(sql1.equals(sql2)){ 
      sql=1; 
      }这句话比较的是String类型的sql1和sql2,没有意义,比较的是两个字符串是否相同,但是你想比较的是两个结果集,你还是先好好看看java获取数据库中的数据的那块知识吧,相信会对你有帮助。