.net使用事务

本文详细阐述了如何使用SQL事务来确保数据库操作的原子性和一致性。通过实例演示了如何在.NET环境中设置事务,执行数据操作,并在发生错误时进行回滚。重点介绍了将事务应用于SQL命令的过程,以及如何在数据导入或更新场景中应用这一概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.事务的建立

SqlConnection   sqlConnection   =   new   SqlConnection();  
  ...初始化连接  
  //   开启事务  
  SqlTransaction   sqlTransaction   =   sqlConnection.BeginTransaction();  
  //   将事务应用于Command  
  SqlCommand   sqlCommand   =   new   SqlCommand();  
  sqlCommand.Connection   =   sqlConnection;   
  sqlCommand.Transaction   =   sqlTransaction;     
  try  
  {  
  //   利用sqlcommand进行数据操作  
  ...  
  //   成功提交  
  sqlTransaction.Commit();  
  }  
  catch(Exception   ex)  
  {  
  //   出错回滚  
  sqlTransaction.Rollback();  
  } 

2.

 public void SaveCITToDataBase(string filename)
        {
            List<List<object>> CitReport = ReaderCIT(filename);
            CitReport.RemoveAt(0);
            SqlConnection con = new SqlConnection(AppConfiguration.CITConnectionString);
            SqlCommand com = new SqlCommand();
            com.Connection = con;
            con.Open();
            SqlTransaction tran = con.BeginTransaction();
            com.Transaction = tran;
            string sql = string.Empty;
            try
            {
                foreach (List<object> item in CitReport)
                {
                    sql = "insert into citreport values(";
                    for (int i = 0; i < item.Count; i++)
                    {

                        if (i == 0)
                        {
                            sql += "'" + Convert.ToString(item[i]) + "'";
                        }
                        else
                        {
                            sql += "," + "'" + Convert.ToString(item[i]) + "'";
                        }

                    }
                    sql += ",'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')";
                    com.CommandText = sql;
                    com.ExecuteNonQuery();
                }
                tran.Commit();
                com.Dispose();
            }
            catch (Exception ex)
            {
                tran.Rollback();
                throw ex;
            }
            finally { con.Close(); tran.Dispose(); con.Dispose(); }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值