(6)C#事务处理

为了方便移到了ADO.NET分类里

事务的主要特征是,任务要么全部完成,要么都不完成

事务常用于写入或更新数据库中的数据。将数据写入文件或注册表也可以使用事物。

ADO.NET不支持跨越多个连接的事物,它总是关联到一个连接上的本地事务。

 

1.引入dll -----  System.Transactions

2.引入命名空间

using System.Transactions

 

1.引入dll---- System.Data.OracleClinet

2.引入命名空间

using System.Data.OleDb;

 

不带事物的多表增删改

            string str = ConfigurationManager.AppSettings["con_MES"];
            OleDbConnection conn = new OleDbConnection(str); using (conn) { conn.Open(); try { if (conn.State == ConnectionState.Open) { string sql1 = "insert into fruits (name, place, amount) values ('椰子', '海南', '500')"; string sql2 = "update pingtable set targetip='192.168.55.55' where id=1102"; OleDbCommand command1 = new OleDbCommand(sql1, conn); OleDbCommand command2 = new OleDbCommand(sql2, conn); command1.ExecuteNonQuery(); command2.ExecuteNonQuery(); MessageBox.Show("成功插入"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } MessageBox.Show("关闭连接");

 

单个Connection连接事务的多表增删改

            string str = ConfigurationManager.AppSettings["con_MES"];//连接字符串
            OleDbConnection conn = new OleDbConnection(str);
            using (conn)
            {
                conn.Open();
                OleDbTransaction OT=conn.BeginTransaction();//打开连接后才能赋值给事物
                try
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        string sql1 = "insert into fruits (name, place, amount) values ('椰子', '海南', '500')";
                        string sql2 = "update pingtable set targetip='192.168.55.55' where id=1102";

                        OleDbCommand command1 = new OleDbCommand(sql1, conn, OT);
                        OleDbCommand command2 = new OleDbCommand(sql2, conn, OT);
                        command1.ExecuteNonQuery();
                        command2.ExecuteNonQuery();
                        OT.Commit();              //事务一定要有提交和回滚
                        MessageBox.Show("成功插入");
                    }

                }
                catch (Exception ex)
                {
                    OT.Rollback();
                    MessageBox.Show(ex.Message);
                }
                finally 
                {
                    conn.Close();          //using原本可以关闭连接,这里提前手动加了个关闭是为了尽早的关闭连接,这个finally方法可以不写
                    MessageBox.Show("关闭连接");
                }
            }

 

抽出模板

            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                connection.Open();
                OracleTransaction transaction;
                transaction = connection.BeginTransaction();
                OracleCommand command = connection.CreateCommand();
                try { transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } finally { connection.Close(); } }

 

转载于:https://www.cnblogs.com/buchizaodian/p/8469684.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值