Summary
Keywords
Full Transcript
In this video we will discuss how to handle deadlock errors in an ADO.NET application. Text version of the video http://csharp-video-tutorials.blogspot.com/2015/08/handling-deadlocks-in-adonet.html Healthy diet is very important both for the body and mind. If you like Aarvi Kitchen recipes, please support by sharing, subscribing and liking our YouTube channel. Hope you can help. https://www.youtube.com/channel/UC7sEwIXM_YfAMyonQCrGfWA/?sub_confirmation=1 Slides http://csharp-video-tutorials.blogspot.com/2015/08/handling-deadlocks-in-adonet_31.html All SQL Server Text Articles http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html All SQL Server Slides http://csharp-video-tutorials.blogspot.com/p/sql-server.html All Dot Net and SQL Server Tutorials in English https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd All Dot Net and SQL Server Tutorials in Arabic https://www.youtube.com/c/KudvenkatArabic/playlists To handle deadlock errors in ADO.NET 1. Catch the SqlException object 2. Check if the error is deadlock error using the Number property of the SqlException object Stored Procedure 1 Code Alter procedure spTransaction1 as Begin Begin Tran Update TableA Set Name = 'Mark Transaction 1' where Id = 1 Waitfor delay '00:00:05' Update TableB Set Name = 'Mary Transaction 1' where Id = 1 Commit Transaction End Stored Procedure 2 Code Alter procedure spTransaction2 as Begin Begin Tran Update TableB Set Name = 'Mark Transaction 2' where Id = 1 Waitfor delay '00:00:05' Update TableA Set Name = 'Mary Transaction 2' where Id = 1 Commit Transaction End WebForm1.aspx.cs code namespace Demo { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {} protected void Button1_Click(object sender, EventArgs e) { try { string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; using (SqlConnection con = new SqlConnection(cs)) { SqlCommand cmd = new SqlCommand("spTransaction1", con); cmd.CommandType = CommandType.StoredProcedure; con.Open(); cmd.ExecuteNonQuery(); Label1.Text = "Transaction successful"; Label1.ForeColor = System.Drawing.Color.Green; } } catch (SqlException ex) { if (ex.Number == 1205) { Label1.Text = "Deadlock. Please retry"; } else { Label1.Text = ex.Message; } Label1.ForeColor = System.Drawing.Color.Red; } } } } WebForm2.aspx.cs code namespace Demo { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {} protected void Button1_Click(object sender, EventArgs e) { try { string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; using (SqlConnection con = new SqlConnection(cs)) { SqlCommand cmd = new SqlCommand("spTransaction2", con); cmd.CommandType = CommandType.StoredProcedure; con.Open(); cmd.ExecuteNonQuery(); Label1.Text = "Transaction successful"; Label1.ForeColor = System.Drawing.Color.Green; } } catch (SqlException ex) { if (ex.Number == 1205) { Label1.Text = "Deadlock. Please retry"; } else { Label1.Text = ex.Message; } Label1.ForeColor = System.Drawing.Color.Red; } } } } Link for all dot net and sql server video tutorial playlists https://www.youtube.com/user/kudvenkat/playlists?sort=dd&view=1 Link for slides, code samples and text version of the video http://csharp-video-tutorials.blogspot.com/2015/08/handling-deadlocks-in-adonet.html
