程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> ADO.NET中使用事務進行數據庫讀寫的辦法

ADO.NET中使用事務進行數據庫讀寫的辦法

編輯:關於.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書吧。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved