为什么的我的SqlHelper.ExecuteNonQuery会有重复执行?

问题描述

我查执行后的记录,发现业绩工资重复加了,比如说今天应该加10元,他加了20元。可以保证在数据库中可发放的工资没有重复,已经两天了,在大约200多人中,每次都是有2个人的工资重复加了,而且是不同的人,好像是随机的,各位大侠,帮我找找原因吧,谢谢。intMoney;DateTimeS_Begin=DateTime.Now;//查询所有可发放的工资DataSetds=SqlHelper.ExecuteDateSet(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,"select(Wage_Temp_Money*Wage_Temp_Tax)asMoney,Wage_Temp_User_Id,User_TuJianfrom[Wage_Temp]innerjoin[User]onWage_Temp_User_Id=User_Idwheredatediff(day,getdate(),Wage_Temp_Date_End)>0orderbyWage_Temp_Id",null);for(inti=0;i<ds.Tables[0].Rows.Count;i++){Money=0;Money=Convert.ToInt32(ds.Tables[0].Rows[i]["Money"])*Days;//更新业绩工资SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,"update[User]setUser_Dzb=User_Dzb+"+Money+"whereUser_Id="+ds.Tables[0].Rows[i]["Wage_Temp_User_Id"].ToString(),null);//更新直推工资SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,"update[User]setUser_Dzb=User_Dzb+"+Money+"*0.2whereUser_Id="+ds.Tables[0].Rows[i]["User_TuJian"].ToString(),null);}

解决方案

解决方案二:
是不是按钮点击了2次啊
解决方案三:
你应该像这里的回帖的功能,点击一次按钮不可再点
解决方案四:
引用2楼的回复:

你应该像这里的回帖的功能,点击一次按钮不可再点

解决方案五:
ds里某个人重复了
解决方案六:
要么跟触发事件有关系。比如触发了两次。或者这个方法被调用了两次。要么是你查询语句查出的结果中本来就有重复的数据之类的。
解决方案七:
我是放在ISPosback里的,肯定是执行了一次,不然的话,其它人的工资了加了两次了
解决方案八:
ds查询出来的结果,我也对过,没有重复的,如果有重复的话,那明天重复加的那个人也是今天重复加的人才对,可是昨天复杂加的人和今天重复加的人不是同两个人,所以觉得非常奇怪,望大侠们看看
解决方案九:
ds.Tables[0].Rows判断下它的状态?
解决方案十:
引用1楼的回复:

是不是按钮点击了2次啊

楼主先照着这个解决下看看吧,应该是这个原因
解决方案十一:
//更新业绩工资SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,"update[User]setUser_Dzb=User_Dzb+"+Money+"whereUser_Id="+ds.Tables[0].Rows[i]["Wage_Temp_User_Id"].ToString(),null);//更新直推工资SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,"update[User]setUser_Dzb=User_Dzb+"+Money+"*0.2whereUser_Id="+ds.Tables[0].Rows[i]["User_TuJian"].ToString(),null);这两句你合并成一个SQL执行!
解决方案十二:
引用10楼的回复:

//更新业绩工资SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,"update[User]setUser_Dzb=User_Dzb+"+Money+"whereUser_Id="+ds.Tables[0].Rows[i]["Wage_Temp……

这两个句话执行的是不同的用户ID,不好归并,就是归并了怕是对这个问题无济于事吧
解决方案十三:
既然ds没有重复那么就是说明SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,"update[User]setUser_Dzb=User_Dzb+"+Money+"whereUser_Id="+ds.Tables[0].Rows[i]["Wage_Temp_User_Id"].ToString(),null);语句多执行了2两次,而且是随机的可以不可以把SqlHelper.ExecuteNonQuery函数贴出来
解决方案十四:
还有一种可能就是ds中已经有Money值出错了
解决方案十五:
既然你无法判断哪里出问题了那就断点调试吧这功能不能浪费掉虽然浪费的时间比较多但至少可以找到问题关键
解决方案:
update语句拼在一起执行一个就行了./////////////////////////500人淘宝客交流QQ群:185781220

时间: 2024-09-15 05:19:47

为什么的我的SqlHelper.ExecuteNonQuery会有重复执行?的相关文章

微软官方的SqlHelper

using System; using System.Data;     using System.Xml;     using System.Data.SqlClient;     using System.Collections;     using System.Configuration; namespace BookDAL    {         /// <summary>         /// SqlServer数据访问帮助类         /// </summary&

牛腩新闻发布系统(B/S)中的SQLHelper

1.关于SQLHelper的基础知识的说明,简单介绍一下: SqlHelper是一个基于.NET Framework的数据库操作组件.组件中包含数据库操作方法,SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了.还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不仅仅支持sqlserver,同时支持sqlserver.oracle.access.Mysql数据库,也是一个开

asp.net SqlHelper数据访问层的使用_实用技巧

本文章主要介绍SqlHelper使用. 每个项目都要用到数据访问层,我做的也不例外,但是我把数据访问层做成独立项目,没有什么太大的目的,数据访问层,仅仅做数据访问用,不包含任何逻辑. 为什么要使用数据访问层? 如果不使用数据访问层,那么你的代码里会出现很多SqlConnection.SqlCommand.SqlDataReader.Open. Close--这些类和方法,而且代码量很大,让你不胜其烦,而且代码写起来,其实都是体力活,没有技术含量.因此我们要把数据访问层封装起来,方便重用.微软已经

c#-C# ExecuteNonQuery返回值是1,但是数据库里就是没有更新

问题描述 C# ExecuteNonQuery返回值是1,但是数据库里就是没有更新 form.CS private void button1_Click(object sender, EventArgs e) { object i= SQLHelper.ExecuteNonQuery("Insert into T_Ps(Name,Age) values(@Name,@Age)",new SqlParameter("Name","Tom"),new

asp.net中SQLHelper类实现数据库操作

自己的DBHelper类 显示代码  代码如下 复制代码  public class DBHelper      {          /// <summary>          /// 从Web.config配置文件中读取数据库连接          /// </summary>          private static string connectionStrings = ConfigurationManager.ConnectionStrings["MyCo

SqlHelper代码

using System; using System.Data; using System.Data.SqlClient; namespace SuperMarketOnline { /// /// 最底层的操作数据库代码 /// public class SqlHelper { private SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["SMO"

C# ExecuteNonQuery()的返回值

        SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数. 备注:         可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE.INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据.        虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据

新闻发布系统,B/S模式下的三层应用

三层的学习已接触四五个月了,最早是在学习VB.NET视频中开始接触的,那时候跟着视频敲了两个例子.再后来,个人机房重构的时候,从三层进步到了七层,此后就觉得我们不能仅仅局限于三层之上. 不过,那些都是C/S模式之下的编程.到现在,接触了B/S模式也一个多月了,第一个牛腩新闻发布系统觉得很是有趣,还是从最基本的开始,下面就一起看看B/S模式下,三层是怎样应用的.这篇博客就以添加新闻的实例来总结. 对于三层的整个过程大家都是很熟悉的了,那么在这里就不再赘述了,直接一层一层来分析. 一.思路整理. U

ASP.NET实例: GridView删除时弹出确认对话框

效果图:   html代码 <table align="center" bgcolor="#c0de98" border="0" cellpadding="0" cellspacing="1" width="99%"> <tr> <th colspan="2"> GridView演示</th> </tr> &