事务处理的问题

问题描述

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();事物需要提交的哈。别忘记了。试试

时间: 2024-07-28 16:30:44

事务处理的问题的相关文章

SQL和Oracle对数据库事务处理的差异性

在吉日嘎拉的软件编程走火入魔之:数据库事务处理入门(适合初学者阅读)文章中关于MS SQL Server和Oracle对数据库事务处理的差异性引起一些争论,因此记录我对数据库事务处理的想法. 简介 本文讲述MS SQL Server和Oracle对数据库事务处理的差异性,以及Oracle如何对事务处理的实现. 什么是事务 数据库事务(Database Transaction)是一组数据库操作的处理单元.事务符合ACID的特性: Atomic:原子性,要么全部要么一无所有.All or None.

Sqlserver2000中的事务处理

server|sqlserver|事务处理 Sqlserver2000中的事务处理 一.       定义及其性质:事务:事务是作为单个逻辑工作单元执行的一系列操作.属性:一个逻辑工作单元必须有四个属性,称为 ACID(原子性.一致性.隔离性和持久性)属性,只有这样才能成为一个事务:1.      原子性:事务必须是原子工作单元:对于其数据修改,要么全都执行,要么全都不执行.2.      一致性:事务在完成时,必须使所有的数据都保持一致状态.在相关数据库中,所有规则都必须应用于事务的修改,以保

asp事务处理的另外一个方法

事务处理|事务处理   <%'asp事务处理.'测试数据库为sql server,服务器为本机,数据库名为test,表名为a,两个字段id(int)主键标识,num(int)set conn=server.CreateObject("adodb.connection") strConn="provider=sqloledb.1;persist security info=false;uid=sa;pwd=sa;Initial Catalog=test;Data Sour

利用ASP实现事务处理的方法

事务处理|事务处理 在开发Web应用时,无一例外地需要访问数据库,以完成对数据的查询.插入.更新.删除等操作.受应用逻辑的影响,有时需要将多条数据库操作指令组成一个工作单元(事务).在数据库中,所谓事务是指一组逻辑操作单元,它使数据从一种状态变换到另一种状态.为确保数据库中数据的一致性,应当用离散的成组的逻辑单元操作数据:当它全部完成时,数据的一致性可以保持:而当单元中的一部分操作失败时,整个事务会被全部忽略,所有从起始点以后的操作全部退回到开始状态. 实际上,在默认方式下对数据库的每一次操作都

ASP中对数据库表的操作,可使用事务处理,并支持多事务处理

事务处理|数据|数据库 在ASP的数据库对象链接对象中,提供了一下属性: BeginTrans 事务开始 CommitTrans 事务提交 RollbackTrans 事务回滚 <% On Error Resume Next '错误发生后继续处理 'Asp中使用事务 Set conn=Server.CreateObject("ADODB.Connection") conn.Open "course_dsn","course_user",&q

Oracle 9i 事务处理

   事务是Oracle 9i中进行数据库操作的基本单位,在PL/SQL程序中,可以使用3个事务处理控制命令. commit命令     commit是事务提交命令.在Oracle 9i数据库中,为了保证数据的一致性,在内存中将为每个客户机建立工作区,客户机对数据库进行操作处理的事务都在工作区内完成,只有在输入commit命令后,工作区内的修改内容才写入到数据库上,称为物理写入,这样可以保证在任意的客户机没有物理提交修改以前,别的客户机读取的后台数据库中的数据是完整的.一致的,如图9.26所示.

MYSQL高级特性 -- 事务处理

下面以两个银行账户之间的转账为例子进行演示. 要使用MySQL中的事务处理,首先需要创建使用事务表类型(如BDB = Berkeley DB或InnoDB)的表. CREATE TABLE account ( account_id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, balance DOUBLE ) TYPE = InnoDB; 要在事务表上使用事务处理,必须要首先关闭自动提交: SET AUTOCOMMIT = 0; 事务处

Java中数据库事务处理的实现

事务处理|数据|数据库 摘要 本文介绍在Java中进行事务处理的方法,通过实例分别讲述了如何采用JavaBean.Ejb组件实现J2EE应用服务器支持的JDBC事务.JTA(Java Transaction API)事务. 关键词 JavaBean,EJB, 数据库,事务处理,JTA JavaBean JavaBean是用Java语言编写的与平台无关的组件.它是描述Java的软件组件模型,有点类似于Microsoft的COM组件的概念.在Java模型中,通过JavaBean可以无限扩充Java程

通过ADO.NET实现事务处理

ado|事务处理 在数据库连接上创建事务处理对象,然后调用事务处理对象来提交事务或回滚事务.简单的代码: private void button1_Click(object sender, System.EventArgs e)  {   SqlConnection conn = new SqlConnection("Data Source=192.168.2.200;uid=sa; password=;database = HaierHR");   conn.Open();   //

SQL读书笔记-事务处理

笔记|事务处理 理解sql事故处理1 在sql事务处理期间,由语句所完成的工作,在永久写入数据库之前都可以取消(使用rollback语句).commit告诉dbms使数据库的变化成为永久的. 下面就来理解一下事务处理过程如:begin transaction语句1语句2语句3语句4在应用程序正常结束之前,4条修改语句并未提交,即未成为永久的,由此,异常结束将使得dbms取消由应用程序体中的所有4条sql语句所做的修改. 如果想让前两条修改后永久保存到数据库中,而不管后两条是否成功.可以执行如下事