问题描述
stringstr="";inti=0;foreach(XmlNodenodeinxmlnode){i++;varphone=node.ChildNodes[0].InnerText.Trim();varcontent="内容";varStatus="成功";varCreatedBy=Loginer.Account;DateTimeCreatedOn=DateTime.Now;str+="insertintoSendMsgvalues('"+phone+"','"+content+"','"+Status+"','"+CreatedBy+"','"+CreatedOn+"');";if((i%1000)==0){try{Gateway.Default.FromCustomSql(str).ExecuteNonQuery();}catch(Exception){result.Insert=0;result.Failed=0;}str="";Thread.Sleep(3000);}}
求高手指点,我是拼接sql语句,拼接了多个insert,如果1000次会执行1000个insert,但是1000个之后,就不执行了,到2000的时候会再次执行一次,那如果我导入的数据假如说是1999个,最终只会执行1000个,求好心人指点下,谢谢!
解决方案
本帖最后由 qq_29148333 于 2015-06-19 01:17:38 编辑
解决方案二:
撸主1999%1000;//运算结果是999,if判断为false
另外,使用StringBuilder.Append取代str+=
解决方案三:
给力。。。。。。。。。。。。。。。。。。。。。。。
解决方案四:
在foreach之后,再加一个if((i%1000)!=0)//处理数据
解决方案五:
intmax=xmlnode.Count;if((i%1000)==0||i==max-1){//code}
解决方案六:
你的i是1开始的,那应该是判断i==max
解决方案七:
你不如改成这样if((i>=1000){i=0;//执行}这样在循环执行完毕之后,再次判断i,如果大于0,就再次执行一次,如果等于0,就不用执行了