首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

咨询一个mysql数据并发,造成数据统计不准确的有关问题,特急

2012-01-19 
咨询一个mysql数据并发,造成数据统计不准确的问题,特急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!咨询一个mysql

咨询一个mysql数据并发,造成数据统计不准确的问题,特急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
咨询一个mysql数据并发,造成数据统计不准确的问题,特急
我用的是jsp+mysql,制作了一个网站统计,统计插入统计代码到您网站后,统计你总共的浏览IP数据,和每天的浏览IP总数,每天每小时的浏览IP总数.

但发现统计后,每小时加起来的数,对不起每天的数据,每天加起来的数据,对不上总的浏览IP数,我用的是mysql数据库,我用的是mysql   MyISAM格式

我的程序代码如下:


是不是mysql同时的并发数据量大,还是什么原因,应该如何解析这数据能同步,数据各个表统计的数据加起来能够互相的符合,互相的准确一致

我更建立了三张表,一个是用户表,里面有一个总的点出量;

还有一个是日表,统计表每个用户日点出量表

还有一个是小时表,统计每个用户每小时的点出量表


          //统计总的点出量


                                dbc.prepareStatement(
                                        "update   users   set   outscore=outscore+?   where   username=? ");
                                dbc.setDouble(1,   unitscoredouble);
                                dbc.setString(2,   outname);
                                dbc.executeUpdate();
                                //统计每天点出量
                                dbc.prepareStatement(
                                        "select   username   from   userdayhistory   where   username=?   and   dotyearmonth=?   and   dotday=? ");
                                dbc.setString(1,   outname);
                                dbc.setInt(2,   yyyyMM);
                                dbc.setInt(3,   d);
                                rs   =   dbc.executeQuery();
                                if   (rs.next())   {
                                    dbc.prepareStatement(
                                            "update   userdayhistory     set     outscore=outscore+?   where   username=?   and   dotyearmonth=?   and   dotday=? ");
                                    dbc.setDouble(1,   unitscoredouble);
                                    dbc.setString(2,   outname);
                                    dbc.setInt(3,   yyyyMM);


                                    dbc.setInt(4,   d);
                                    dbc.executeUpdate();
                                }
                                else   {
                                    try   {
                                        dbc.prepareStatement( "INSERT   INTO   userdayhistory   (username,outscore,putscore,dotyearmonth,dotday)   VALUES   (?,?,?,?,?) ");
                                        dbc.setString(1,   outname);
                                        dbc.setDouble(2,   unitscoredouble);
                                        dbc.setInt(3,   0);
                                        dbc.setInt(4,   yyyyMM);
                                        dbc.setInt(5,   d);
                                        dbc.executeUpdate();
                                    }
                                    catch   (SQLException   ex7)   {
                                        System.out.println( "494 ");

                                    }
                                }
                                //统计每小时点出量
                                dbc.prepareStatement(
                                        "select   username   from   userhourhistory   where   username=?   and   dotyearmonthday=?   and   dothour=? ");
                                dbc.setString(1,   outname);
                                dbc.setInt(2,   yyyyMMdd);


                                dbc.setInt(3,   H);
                                rs   =   dbc.executeQuery();
                                if   (rs.next())   {
                                    dbc.prepareStatement(
                                            "update   userhourhistory     set     outscore=outscore+?   where   username=?   and   dotyearmonthday=?   and   dothour=? ");
                                    dbc.setDouble(1,   unitscoredouble);
                                    dbc.setString(2,   outname);
                                    dbc.setInt(3,   yyyyMMdd);
                                    dbc.setInt(4,   H);
                                    dbc.executeUpdate();
                                }
                                else   {
                                    try   {
                                        dbc.prepareStatement( "INSERT   INTO   userhourhistory   (username,outscore,putscore,dotyearmonthday,dothour)   VALUES   (?,?,?,?,?) ");
                                        dbc.setString(1,   outname);
                                        dbc.setDouble(2,   unitscoredouble);
                                        dbc.setInt(3,   0);
                                        dbc.setInt(4,   yyyyMMdd);
                                        dbc.setInt(5,   H);
                                        dbc.executeUpdate();
                                    }
                                    catch   (SQLException   ex11)   {


                                        System.out.println( "9994 ");

                                    }
                                }

[解决办法]
是不是要启用事务?
[解决办法]
你自己的设计不合理。

热点排行