public bool Insert(Kid kid) { bool insertSuccessful; if (kid == null || !kid.IsValidNew()) throw new ArgumentException(); var cmd = DBUtility.SqlCommand("Kid_Insert"); // Start a local transaction. var transaction = cmd.Connection.BeginTransaction(IsolationLevel.ReadCommitted, "Kid_Insert"); cmd.Transaction = transaction; try { cmd.Parameters.Add("@Name", SqlDbType.Text, 50); cmd.Parameters.Add("@Email", SqlDbType.Text, 150); cmd.Parameters["@Name"].Value = kid.Name; cmd.Parameters["@Email"].Value = kid.Email; int returnValue = cmd.ExecuteNonQuery(); transaction.Commit(); if (returnValue < 0) { throw new Exception("Error Text Added to the Database: " + returnValue.ToString()); } else { insertSuccessful = true; } } catch (Exception e) { try { transaction.Rollback(); } catch (SqlException ex) { if (transaction.Connection != null) { Console.WriteLine("An exception of type " + ex.GetType() + " was encountered while attempting to roll back the transaction."); } } Console.WriteLine("An exception of type " + e.GetType() + " was encountered while inserting the data."); Console.WriteLine("Neither record was written to database."); insertSuccessful = false; } return insertSuccessful; }