数据库设计是,应避免重复插入(用主键……)。如重复插入,导到ErrorPage就可!

解决方案 »

  1.   

    同意buick555(王飞) ,用数据库表主键约束。
      

  2.   

    好像是在提交表单后加一个随机数。
    论坛里好像很多类似贴子。你搜索一下jsp栏吧。
      

  3.   

    怎样加一个随机数?buick555(王飞) 所想的想法在我这一个表里面没法控制的,其他表可以,但就是因为这个表是要求任意的加上数个记录,在最后才提交的,所以这个表的ID就设为自动在插入前加1了!!!
      

  4.   

    你可以在插入以后重新LOAD一次你的页面,也就是清空你要提交的内容;
      

  5.   

    应该还是你的jsp/servlet的问题,关键代码贴出来,看看怎么帮你解决。有一个相同的帖子,一按刷新就重新提交,你可以搜索看一下。
      

  6.   

    采用同步令牌来避免重复提交,可以参考j2ee核心模式这本书
      

  7.   

    代码很多,不知怎样帖,我现在是用事务来提交的,即在开始时建立一个新的连接,设为connection.setAutoCommit(false);,之后每次进行插入时都是用原来的这个连接,直到提交的时候,把这个事务也 connection.commit();就这样才真正提交到数据库(注意:插入数据库的确定按钮与提交按钮是两个按钮来的)!所以:
    outer2000(天外流星)的提法,如果执行的话,那不把我整个事务都rollback掉了!--------------
    现在的插入就好像是一对多的关系,当一个主表的一个记录插入时,把这多个记录(也就是上面所说的事务)插入另一个表中,然后这多个记录的ID设为与主表的记录ID相等,最后提交事务,情况就是这样!
      

  8.   

    现在时间很紧,没那么多时间来和看“j2ee核心模式”!
      

  9.   

    我觉得是你数据库设计有问题。
    如果不修改数据库设计,那你应该插入之前先检查一下该记录是否存在,即检查你不允许重复的某个字段,如果没有,在执行数据库操作,否则提示已经存在,或干脆导航道别的页面。如下:
    String sqlStr = "select columnName from tableName";
    ResultSet rs = st.executeQuery(sqlStr);
    if(rs.next())
    {
       //提示或导航
    }
    else
    {
      //insert 操作
    }
      

  10.   

    To: Tmsheng(小唐蔡) 数据库设计并没问题,因为这是一个附表.不过你那个想法也值得考虑一下。To: sery(莫桑比克的乌木) 把入库页面处理完成再跳转到提交页面,那有没想过我一直在入库页面操作的时候,按F5的情况,现在就是这种情况啊!
      

  11.   

    在程序中控制,我看过一个有session变量控制的,插入记录前如果session变量值为undo,则可插入新记录,成功后可将此变量设为do,此时无论他按多少次F5都不会有插入操作。当用户返回提交面页时,session变量设为undo,可填写新的记录了。
    这样的作法相信能收到一定的效果。
      

  12.   

    不知为什么,我在程序中用了一个变量来控制,当单击按钮的时候,我在按钮的onclick事件中写了一个false的值,然后去到servlet里面,判断当变量为false时,我就让程序执行操作,完成后将变量设为true了...但当我再按下F5的时候,又插入了一条,为什么那个变量没用的???
      

  13.   

    现在情况是页面也是同一页,servlet也是同一个,操作完成与否都是用同一个servlet提交回到同一个jsp!(此时如果不用变量就会发生循环的,因为是提交回同一个servlet!)但用上面的变量可以控制servlet不发生循环即只执行了一次,但对F5好像一点用都没有!