敖士伟 事务 体会一
发布日期:2021-07-17 20:20:33 浏览次数:2 分类:技术文章

本文共 1469 字,大约阅读时间需要 4 分钟。

如果SqlCommand依附的连接上有事务,那么对必须给SqlCommand指定事务.不然出现异常:
异常详细信息: System.InvalidOperationException: 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化。
代码:
  1.     string connString = "Data Source=192.168.0.x;Initial Catalog=test1;User ID=dev_user;Password=dev_user";
  2.             SqlConnection conn = new SqlConnection(connString);
  3.             conn.Open();
  4.             SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.Serializable);
  5.             SqlCommand sqlcomm = new SqlCommand();
  6.             sqlcomm.Connection = conn;
  7.             //sqlcomm.Transaction = transaction;
  8.             sqlcomm.CommandText = "insert into yg(yg_name,b_id) values('b',1)";
  9.             sqlcomm.ExecuteNonQuery();
  10.             transaction.Rollback();
  11.             conn.Close();
2.事务的Rollback()操作其实是使用了与sql相反的操作,如insert的Rollback为delete.
意思就是在Rollback之前,sql已真实地去数据库进行了操作.
3.事务是引用类型,其它过程对其的操作会影响它.
  1. protected void Button1_Click(object sender, EventArgs e)
  2.         {
  3.             string connString = "Data Source=192.168.0.211;Initial Catalog=test1;User ID=dev_user;Password=dev_user";
  4.             SqlConnection conn = new SqlConnection(connString);
  5.             conn.Open();
  6.             SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.Serializable);
  7.             SqlCommand sqlcomm = new SqlCommand();
  8.             sqlcomm.Connection = conn;
  9.             sqlcomm.Transaction = transaction;
  10.             sqlcomm.CommandText = "insert into yg(yg_name,b_id) values('c',1)";
  11.             sqlcomm.ExecuteNonQuery();
  12.             //transaction.Rollback();
  13.             myrollback(transaction);//事务是引用类型,其它过程对其的操作会影响它.
  14.             conn.Close();
  15.             Label1.Text = "ok";
  16.         }
  17.         void myrollback(SqlTransaction transaction)
  18.         {
  19.             transaction.Rollback();//insert无效
  20.         }

转载地址:https://blog.csdn.net/ikmb/article/details/3581236 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SQL 分页算法
下一篇:Asp.net页面出现“Internet Explorer无法打开站点,已终止操作”的解决

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月11日 09时08分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java矩阵类_Java泛型——泛型矩阵类 2019-04-21
java车牌正则表达式_车牌正则表达式 2019-04-21
wordpress4.9.4 mysql_WordPress 将不再支持 PHP4 和 MySQL 4 2019-04-21
安卓是用java语言写的吗_android开发是用java语言吗? 2019-04-21
java 符号 t_java – 运算符”不能应用于’T’,’T’表示有界泛型类型 2019-04-21
用matlab写出信源熵,计算离散信源的熵matlab实现 2019-04-21
php表单yii2,Yii2创建表单(ActiveForm)方法详解 2019-04-21
php 程序授权机制,授权认证详细说明 2019-04-21
java 命令提示符,如何使用Java打开命令提示符并插入命令? 2019-04-21
IP/tzgm.php,LianjiaSpider/在售数量.ipynb at master · BerSerK/LianjiaSpider · GitHub 2019-04-21
linux移动文件的脚本,使用Linux脚本移动文件 2019-04-21
linux查看系统所有变量,Linux系统各指标命令 2019-04-21
linux打印机守护程序,linux下怎么编写守护程序呢? 2019-04-21
嵌入式linux 设置时间,time_clock控件应用,使用命令date -s 12:00:00手动设置时间后,时间就停住不走了,我在Ubuntu和嵌入式Linux平台都测试到了... 2019-04-21
linux 8086下编译,Ubuntu18.04/Linux下安装DosBox进行8086汇编 2019-04-21
linux监控windows,zabbix监控之linux及windows客户端安装配置 2019-04-21
linux中怎么卸载tree,Liunx系统命令中tree命令详解 2019-04-21
linux 网络音箱 混音6,Linux音频编程(三)混音器介绍 2019-04-21
node与mysql开源_node与mysql的相互使用————node+mysql 2019-04-21
python合并列表重新排序_python – 将两个已排序的列表合并为一个更大的排序列表... 2019-04-21