如何判断事务是否完成,SqlTransaction
SqlConnection sconn = null;
SqlCommand scmd = null;
SqlTransaction strans = null;
try
{
string sqlInsert = string.Format(@"insert into MyName (myid,myfname,mymname,mylname) values
('{0}','c','c','c')", Guid.NewGuid().ToString());
sconn = new SqlConnection(dbConnStr);
sconn.Open();
scmd = new SqlCommand(sqlInsert, sconn);
strans = sconn.BeginTransaction();
scmd.Transaction = strans; scmd.ExecuteNonQuery(); strans.Commit(); int[] myi = new int[] { };
int myr = myi[];
}
catch (Exception exp)
{
if (strans != null && strans.Connection != null)
strans.Rollback(); MessageBox.Show(exp.Message);
}
finally
{
if (sconn != null)
sconn.Close();
}
如果事务完成后,还有其它代码引发异常,这时就不能去回滚事务了。事务一旦提交,它的Connection就为NULL了,可以通过if (strans != null && strans.Connection != null) 来判断。
如何判断事务是否完成,SqlTransaction的更多相关文章
- MSSQL 视图/事务(TRAN[SACTION])/存储过程(PROC[EDURE])/触发器(TRIGGER )
--视图 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上 视图在操作上和数据表没有什么区别,但两者的差异是其本质是不同: 数据表是实际存储记录的地方, ...
- 走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器
一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 ) DECLARE @id int (2)为变量赋值 SET @变量名 =值 --set用于普通的赋值 SE ...
- SQL Server 数据库的维护(三)__事务(transaction)和锁
--维护数据库-- --事务(transaction)和锁-- --事务(transaction)-- --概述: 事务是指封装了一组T-SQL语句的单个逻辑单元.单元中的所有语句作为一个整体,在满足 ...
- SQL Server中的事务日志管理(7/9):处理日志过度增长
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- SQLServer存储过程中事务的使用
create proc usp_Stock @GoodsId int, @Number int, @StockPrice money, @SupplierId int, @EmpId int, ), ...
- Winform开发框架里面使用事务操作的原理及介绍
在很多情况下,事务是个很有用的东西,可以把一系列的操作组合成一个原子粒度的操作,一旦组合中某个地方出错,可以整个干净的进行滚回,不会留下脏数据:除此之外,事务还能提高批量操作的效率,如在本地SQLit ...
- mysql源码解读之事务提交过程(二)
上一篇文章我介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称 ...
- Redis学习笔记五:独立功能之事务
Redis 事务提供了一种将多个命令请求打包,然后一次性.按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断,会将事务中的所以命令都执行完毕才去处理其他客户端的命令请求. 事务的实现 事务 ...
- MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】
概念: XA(分布式事务)规范主要定义了(全局)事务管理器(TM: Transaction Manager)和(局部)资源管理器(RM: Resource Manager)之间的接口.XA为了实现分布 ...
随机推荐
- WEB-ERROR-PAGE
首先需要在Web.xml文件中配置如下标签: <error-page> <error-code>404 </error-code> ...
- js运动例子1
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- C/S架构系统自动化测试入门
所谓C/S架构即Client/Server(客户端/服务器架构).虽然近年来C/S架构产品越来越少,大有被B/S(Browser/Server 浏览器/服务器)架构超越的趋势,但C/S还是有B/S不可 ...
- AsyncTask 异步任务 的用法(并且使用ORMlite关系数据库);
package com.lixu.asynctask; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.tab ...
- grafana+influxdb安装
登录http://192.168.1.114:3000/login 2.修改完密码之后,进入主界面
- 超级好用的C++万能头文件
#include<bits/stdc++.h>包含了目前c++所包含的所有头文件 对比: #include <iostream> #include <cstdio> ...
- 关于Kynseed
简介:故事发生在Quill地区,玩家将扮演一个家族中的好几代人.你可以在游戏中选择自己的性别,建立农场,成立家族,探索这片土地中的秘密.游戏特色包括不断衰老的世界.所有生物都拥有记忆,并且会不断变老. ...
- Tesseract-OCR 训练教程(二) 合并新的训练文件
在原有训练数据的基础上,如果有新的字符训练信息需要加入,所有数据重新校准一遍就累死人了.... 经研究找到实用合并方法(红色部分为示例,实际应为你自己生成的文件名): 在新的训练数据生成.box 和. ...
- AVAudioPlayer播放音频文件时没声音
AVAudioPlayer播放一个mp3文件时,居然没有声音.mp3文件是放在工程里面的,路径没有错误但就是死活没有声音. func playSound() { let notifyUrl = NSB ...
- POJ 3254 Corn Fields状态压缩DP
下面有别人的题解报告,并且不止这一个状态压缩题的哦···· http://blog.csdn.net/accry/article/details/6607703 下面是我的代码,代码很挫,绝对有很大的 ...