簡體   English   中英

什么與C#中的SQL回滾事務等效?

[英]what is there equivalent to rollback transaction of SQL in c#?

如果在交易中發生任何錯誤

sql將回滾該過程。

BEGIN TRANSACTION

 COMMIT

 IF @@TRANCOUNT > 0
        ROLLBACK

END TRANSACTION

我如何在asp.net C#中做同樣的事情?

檢查以下內容,以了解如何使用Transaction Scope實現隱式事務,這將為您提供C#事務。 如果您為TransactionScope調用Complete方法,則將被提交,否則將被回滾。

http://msdn.microsoft.com/en-us/library/ee818746(v=vs.110).aspx

以下代碼段顯示了一般思路:

using (SqlConnection connection = new SqlConnection("connection string"))
using (SqlTransaction transaction = connection.BeginTransaction())
using (SqlCommand command = new SqlCommand("command text", connection) { Transaction = transaction })
{
    connection.Open();
    try
    {
        command.ExecuteNonQuery();
        transaction.Commit();
    }
    catch
    {
        transaction.Rollback();
        throw;
    }
}

如果命令執行失敗並引發任何異常,則事務將回滾。

我真的不太清楚你的問題。 這是我想分享的東西。 我想你是在問這個。

在SQL中,想象一下這樣的事情(不是真正的語法):

begin transaction
insert into table X y= 1, z =2
insert into table A b =1, c =2
commit

現在,假設表A中沒有列b,那么此事務將無法進行。

要在ASP.Net中做同樣的事情,而您幾乎無法控制實際的數據庫事務,那么我會建議將try / catch和transaction結合起來。 不是因為這是正確的方法,而是因為它可以完成您想要的事情。

同樣,這不是正確的方法。 詳細介紹您的問題,更多的人可以提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM