博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【winfrom】ADO.NET中事务 的创建与使用
阅读量:5140 次
发布时间:2019-06-13

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

public partial class Form1 : Form    {        private readonly static string connString = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;        public Form1()        {            InitializeComponent();        }        /*今天的课程内容是:ADO.NET中事务 的创建与使用          1 事务原理的简单回顾          2 事务的隔离级别介绍          3 在Ado.net中事务的启动与执行         *一系列操作  一个单元    成功,提交   失败  回滚到最初           * 只要成功提交后,就不能再回滚         * 原子性  一致性  隔离性 持久性         *          * 多事务并发,对同一数据  几种错误:         * 1.更新丢失  多用户   同一数据  更新, 覆盖  读取异常         * 2.不可重复读 一个用户读取数据,另一个用户 更新这条数据,再次读取,多次读取不一致         * 3.脏读 第一个事务读取第二个事务正在更新的数据,更新并未完成,造成第一个事务读取到数据,一部分更新,另一部分没更新。         * 4.幻读 第一个事务读取结果集,第二个事务又同时对这个结果集进行增删改操作,第一个事务再次读取,数据发生丢失或新增。                  *          * 锁定  为解决这些问题,一个事务在操作数据的时候,其他事务不能干涉。         *          * 设置隔离级别         * read uncommitted 最低的  脏读         * read committed 默认  不能脏读,存在不可重复读,幻读         * Repeatable read  解决不可重复读         * Snapshot  解决不可重复读         * Serializable 最高级别 解决幻读         */        private void btnAdd_Click(object sender, EventArgs e)        {            string sqlDeptAdd = "insert into T_Department(DeptName,Manager) values (@dName,@manager);select @@identity";            string sqlUserAdd = "insert into T_User(UserName,Age,DeptId) values(@name,@age,@deptId)";            using (SqlConnection conn = new SqlConnection(connString))            {               conn.Open();               SqlTransaction tran =  conn.BeginTransaction();//启动事务,conn是OPen状态  read committed                //一系列的操作               SqlCommand cmd = new SqlCommand();               cmd.Connection = conn;               cmd.Transaction = tran;               try               {                   cmd.CommandText = sqlDeptAdd;                   SqlParameter[] paraDept = new SqlParameter[]{                       new SqlParameter("@dName",txtDeptName.Text.Trim()),                       new SqlParameter("@manager",txtManager.Text.Trim())                   };                   cmd.Parameters.AddRange(paraDept);                   object oId = cmd.ExecuteScalar();                   cmd.CommandText = sqlUserAdd;                   SqlParameter[] paraUser = new SqlParameter[]{                       new SqlParameter("@name",txtName.Text.Trim()),                       new SqlParameter("@age",int.Parse(txtAge.Text.Trim())),                       new SqlParameter("@deptId",Convert.ToInt32(oId))                   };                   cmd.Parameters.Clear();                   cmd.Parameters.AddRange(paraUser);                   cmd.ExecuteNonQuery();                   tran.Commit();               }               catch (Exception ex)               {                   tran.Rollback();                   MessageBox.Show(ex.Message);               }                              finally               {                   tran.Dispose();               }                           }        }        private void Form1_Load(object sender, EventArgs e)        {            LoadData();        }        private void LoadData()        {            DataTable dt = new DataTable();            using (SqlConnection conn = new SqlConnection(connString))            {                SqlDataAdapter da = new SqlDataAdapter("select u.Id,UserName,Age,DeptId,DeptName from T_User u,T_Department d where u.DeptId=d.Id", conn);                da.Fill(dt);            }            dataGridView1.DataSource = dt;        }    }

  APP.config

  

转载于:https://www.cnblogs.com/Microera/p/8648635.html

你可能感兴趣的文章
web.config详解
查看>>
ZJOI2018游记Round1
查看>>
侧边栏广告和回到顶部
查看>>
https://blog.csdn.net/u012106306/article/details/80760744
查看>>
【转】从头到尾彻底理解KMP
查看>>
ios应用版本号设置规则
查看>>
海上孤独的帆
查看>>
error: more than one device and emulator 问题解决
查看>>
Java基础:容器
查看>>
YUV摘要格式
查看>>
【方法2】删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录
查看>>
C# CheckedListBox控件的使用方法
查看>>
【HDOJ】2007平方和与立方和
查看>>
js中const,var,let区别
查看>>
SharePoint自定义程序页面部署 不用重启IIS
查看>>
2014-11-30-2333-Java-数组
查看>>
Nginx 自动补全url地址补全最后的斜线
查看>>
【SQL Server 2008 安装全过程】
查看>>
xml的解析及案例的分析和分享
查看>>
[译] 盘点CSS3中的新特性
查看>>