一个事务处理如何能循环处理多条记录的问题---请高手指点

muddledman 2002-07-24 08:11:57
要对符合条件的一些纪录进行同步更新,所以想在一个事务处理中完成!不知道能不能!
就是说比如在一个隐含表单中保存了一些需要更新的id值,根据这些id值分别在事务处理中进行循环更新,注意不能用update,因为对有些表进行操作时需要做insert操作的!
...全文
84 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
muddledman 2002-07-26
  • 打赏
  • 举报
回复
sql语句没问题,我把语句拷贝到数据库中执行,一切正常,可是在页面中显示 说第0行无记录!why?
online 2002-07-25
  • 打赏
  • 举报
回复
写成存储过程
随编写
bluefish922 2002-07-25
  • 打赏
  • 举报
回复
还是不太明白,能否把SQL语句写出来看看。
muddledman 2002-07-25
  • 打赏
  • 举报
回复
没人知道嘛?
muddledman 2002-07-25
  • 打赏
  • 举报
回复
因为有些表是纪录程序日志信息的,不能更新原有记录,只能在修改后添加新的日志记录,所以只能作insert记录,如果能update,那很容易实现的用id in(id记录集)就可以了,可是现在需要作insert操作,不久需要循环执行了嘛,难。。。。。。不知道大家有没有解决办法呀
bluefish922 2002-07-25
  • 打赏
  • 举报
回复
把循环放在事务里面,包括所有的SQL语句应该可以的。
给你个例子
Dim myConnection as SQLConnection = new SQLConnection("")
Dim myCommand as SQLCommand = new SqlCommand()
Dim myTrans as SqlTransaction
myConnection.Open()
myCommand.Connection = myConnection
myTrans = myConnection.BeginTransaction()
myCommand.Transaction = myTrans
try
myCommand.CommandText =“”
myCommand.ExecuteNonQuery()
myCommand.CommandText =“”
myCommand.ExecuteNonQuery()
myTrans.Commit()
catch e as Exception
myTrans.Rollback()
finally
myConnection.Close()
end try
itstarting 2002-07-25
  • 打赏
  • 举报
回复
你先把str打印出来,注释掉mycommand.ExecuteNonQuery()……
不就能一目了然了吗
henryfan1 2002-07-25
  • 打赏
  • 举报
回复
把事务设在循环外。
muddledman 2002-07-25
  • 打赏
  • 举报
回复
上面语句,说明如下:container_number.Value保存了一个由14位id中间用逗号分割的一串id值,程序目的是将其中的每个id分别读取并对相关的id记录在相应的数据表中进行操作!
请大家帮忙看看,为什么我老是提示出错!说第0行无记录!
muddledman 2002-07-25
  • 打赏
  • 举报
回复
For number = 1 To (Len(container_number.Value) Mod 14) + 1
other_container_no.Value = Mid(container_number.Value, (number - 1) * 15 + 1, 14)
str = "update container_status_msg set update_time='" + Format(Now.Now, "yyyy-MM-dd HH:mm:ss") + "',new_status_msg='该单已修改',new_status_code=2 ,CONTAINER_NO='" + container_no.Value + "'where CONTAINER_ID='" + other_container_no.Value + "'"
mycommand.CommandText = str
mycommand.ExecuteNonQuery()
str = "insert into container_status(CONTAINER_ID,mod_time,msg,MSG_CODE)values('" + other_container_no.Value + "','" + Format(Now.Now, "yyyy-MM-dd HH:mm:ss") + "','该单已修改!','2')"
mycommand.CommandText = str
mycommand.ExecuteNonQuery()
Next
muddledman 2002-07-25
  • 打赏
  • 举报
回复
For number = 1 To (Len(container_number.Value) Mod 14) + 1
other_container_no.Value = Mid(container_number.Value, (number - 1) * 15 + 1, 14)
str = "update container_status_msg set update_time='" + Format(Now.Now, "yyyy-MM-dd HH:mm:ss") + "',new_status_msg='该单已修改',new_status_code=2 ,CONTAINER_NO='" + container_no.Value + "'where CONTAINER_ID='" + other_container_no.Value + "'"
mycommand.CommandText = str
mycommand.ExecuteNonQuery()
str = "insert into container_status(CONTAINER_ID,mod_time,msg,MSG_CODE)values('" + other_container_no.Value + "','" + Format(Now.Now, "yyyy-MM-dd HH:mm:ss") + "','该单已修改!','2')"
mycommand.CommandText = str
mycommand.ExecuteNonQuery()
Next
lsd_lf 2002-07-24
  • 打赏
  • 举报
回复
不太懂你的意思!为什么只能Insert,不能update,反正一个事务里的所有操作要么全部完成,要么全部滚回。还应该根据具体情况设置事务的粒度

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧