问题描述
Trans=con.BeginTransaction()'开始事务comm.Connection=con:comm.Transaction=Transcomm.CommandText="DeleteFromUser"'删除用户表中的所有记录,该表有两个字段ID(主键),Namecomm.ExecuteNonQuery()comm.CommandText="InsertIntoUser(ID,Name)Values('001','小张')"'添加用户但该用户ID在删除表之前是存在的。comm.ExecuteNonQuery()'此处出错提示表中插入重复值。如果不使用事务运行正常,启用事务似乎是删除没有作用(用Datatable打开表,里面却没有记录)!各位高手是什么原因,该如何处理呢?
解决方案
解决方案二:
事务没有提交吧
解决方案三:
你的事务没有提交,trans.Commit();事务执行成功后需要提交,如果事务出现异常,则需回滚整个事务trans.Rollback();
解决方案四:
各位问题不是事务没提交,已经出错了怎么提交?如果Rollback()一切都白做了,我的目的是先删除整个表中的所有记录,再新建,因为新建的记录中有以前的记录所以没法进行。跟事务提交没有关系。comm.CommandText="InsertIntoUser(ID,Name)Values('001','小张')"'添加用户但该用户ID在删除表之前是存在的。comm.ExecuteNonQuery()'此处出错提示表中插入重复值。
解决方案五:
楼主贴出来的这些代码,看起来应该是能够连续运行到最后的呀。在事物里面先删除所有记录再重新插入记录的方式,是应该能够正常执行的。是不是其他原因造成的呀?比如说表被锁住了导致无法删除数据。或者是你贴出来的代码不全,其他的代码导致出问题了?
解决方案六:
你的代码Trans=con.BeginTransaction()'开始事务comm.Connection=con:comm.Transaction=Transcomm.CommandText="DeleteFromUser"'删除用户表中的所有记录,该表有两个字段ID(主键),Namecomm.ExecuteNonQuery()comm.CommandText="InsertIntoUser(ID,Name)Values('001','小张')"'添加用户但该用户ID在删除表之前是存在的。comm.ExecuteNonQuery()'此处出错提示表中插入重复值。我把红色代码处修改一下,comm.CommandText="IFEXISTS(SELECT*FROMUser)BEGINDELETEFROMUserENDInsertIntoUser(ID,Name)Values('001','小张')";comm.ExecuteNonQuery();事物需要提交的哈。别忘记了。试试