最近做一个访问量统计的功能,每访问一次该页面,数据库中字段加1,我写的数据库如下:
 update tablename set num = num + 1 where id = ?
在ISQL PLUS里是可以的,但是放到程序中确无法实现希望高手指点?
public class Test {
public static void main(String args[]) {
DataAccess data = new DataAccess();
String sql = "update pageview set num=num+1 where id=1001";
int i = data.executeUpdate(sql);
System.out.println(i);
}
}

解决方案 »

  1.   

    程序没有报错,但是执行到
    int i = data.executeUpdate(sql);
    一行时就不动了
      

  2.   

    DataAccess 有问题?还是你设置断点了?id='1001'?
      

  3.   

    dataAccess不会有问题的,其他的sql语句都是可以执行的,我在那句是设置了断点测试的,但是就是通不过
      

  4.   


       哈哈.访问就 + 1  ?  我建议你啊,自动的每天固定的时候就update 一次.
     将这段时间的点击次数记录起来.    你的加了dataAccess 事物处理没? 肯定是dataAccess 有问题拉
      

  5.   

    你能将你的DataAccess  executeUpdate()方法的代码贴出来
      

  6.   

    public int executeUpdate(String sql)
        {
            Statement st = null;
            int result;
            try
            {
             st = connection.createStatement(1005, 1008);
                result =  st.executeUpdate(sql);
                //System.out.println(sql);
                //return result;
            }
            catch(Exception e)
            {
                e.printStackTrace();
                return 0;
            }finally{
                try{
                 if(st != null) {
                     st.close();
                     st = null;
                 }
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            return result;
        }
      

  7.   

     
        你把st.executeUpdate(sql);  改成 st.execute(sql); 试一下. 我想这有可能不行.  还有一种办法是: 
        
       先进行查询 String sql = "select * from tablename where id = 1001";
     得到num: num = num +1  的值 再进行更新. 
      方法:
        1 可以分布进行
        2 可都写在一起.
          st = connection.createStatement(1005, 1008); 
          rs =  (ResultSet) st.executeQuery(sql); 
          if(rs.next()) {
           long num = rs.getLong("num");        num +=1;       rs.updateObject("num", num);     rs.updateRow();   
            }