很奇怪的现象,每次update table set M=M+1后数据库是加2,不是加1这种现象是最近发现的。把语句打出来粘到SQL查询分析器里执行就是正确的,每次增加1
一放进C#的WEB页面里,就变成了加2啦,太奇怪了。一开始还以为是数据库操作了两次,但把数据库所有语句都一个个拆开来调用,确保只执行一次,结果还是加了2不知到底是我的原因,还是.NET 本身的原因。如果是我的原因,到底问题出在什么地方?这是很简单的一句SQL语句。后来,我还使用这种方式改写,结果也是加成了2
M=0;
sql=select M from table
M=读SQL中的值并转成 int32
M++
update table set M=M
结果也是加成了2

解决方案 »

  1.   

    你是放到pageload里执行的吧,如果有几个用户控件在页面了,pageload有时候会执行2次。
      

  2.   

    如果你的语句是写在Page_Load事件中,请在
    if(!this.IsPostBack)
    {
        ...
    }
    里面写代码
      

  3.   


    我把程序的SQL删除,直接在pageload 的最前面执行,数据库加1操作命令完成后紧跟 Response.End();
    结果还是加2真是奇怪了,还会有什么可能的原因造成这种现象呢
      

  4.   

    很有可能是在数据控件里调用了两次,我就出现执行两次的情况:
    假设你要调用的后台方法为UpdateDB在aspx页面中的DataGrid属性填写OnEditCommand="UpdateDB" 属性而aspx页面的cs文件也有如下事件:
    this.DataGrid名称.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.UpdateDB);
    /* 通过在DataGrid的事件列表中选EditCommand为“UpdateDB",代码由Vs.NET2003自动生成*/
    则出现执行两次的情况
    以为对你有帮助~
      

  5.   

    同意jxufewbt(我的目标是5星)
    如果你的语句是写在Page_Load事件中,请在
    if(!this.IsPostBack)
    {
        ...
    }
    里面写代码