• ADO.NET中使用事务进行数据库读写的办法


    使用事务一般是进行数据写入,数据读取一般是不需要这货的

    第一种办法:

    使用存储过程:

    顾名思义,在存储过程中定义好变量,定义好事务开始,结束,错误回滚然后在ADO.NET中正常调用存储过程的方法就行

        /// <summary>
        /// 通过存储过程来使用事务
        /// </summary>
        /// <param name="conn">数据库链接</param>
        /// <param name="id">传入的参数</param>
        private void TransactionDB(SqlConnection conn, int id)
        {
            SqlCommand cmd = new SqlCommand("spAddOrderxxxx", conn);//第一个参数为存储过程名
            cmd.CommandType = CommandType.StoredProcedure;//设置命令方式为存储过程
    
            cmd.Parameters.Add("@CustomerID", SqlDbType.Int).Value = id;//设置参数
    
            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                Trace.Write(ex.Message);
            }
            finally
            {
                if (conn.State != ConnectionState.Closed)
                {
                    conn.Close();
                }
            }
        }

    而事务提现在存储过程中

    CREATE PROcedure [spAddxxxx]
        @CustomerID int
    AS
        Begin Transaction
        ..........此处省略若干行
    commit transaction
    return
    
    ErroHandler:
    rollback transaction
    return

    第二种方式:采用ADO.NET带有的事务处理方式(能对付不支持事务的数据库哦)

       private void Transaction(SqlConnection conn)
        {
            SqlCommand cmd = new SqlCommand("xxxxx", conn);//xxxxx为SQL语句
    
            SqlTransaction transaction = null;
    
            try
            {
                conn.Open();
                transaction = conn.BeginTransaction();
                cmd.Transaction = transaction;//命令绑定事务
                cmd.ExecuteNonQuery();
                cmd.CommandText = "xxxxxxxxxxyyyyy";//换个命令再来!
                cmd.ExecuteNonQuery();
    
                transaction.Commit();//OK,现在才开始执行哦
            }
            catch (Exception ex)
            {
                transaction.Rollback();//异常回滚
            }
            finally
            {
                if (conn.State != ConnectionState.Closed)
                {
                    conn.Close();
                }
            }
    
        }

    结束,这就是使用事务的两种方法。在进行大量数据写入的情况下很适合用事务哦,具体原理~去翻SQL书吧。

  • 相关阅读:
    uva 804WAWAWA--不想看了以后再说
    uva10129 play on words
    tree--
    打印素数表orz
    DeepFM模型
    国内常用镜像链接
    Thompson(汤普森)采样
    知识图谱简介
    显式反馈和隐式反馈
    RNN之LSTM及双向LSTM
  • 原文地址:https://www.cnblogs.com/UliiAn/p/3207436.html
Copyright © 2020-2023  润新知