• 0

C# - SqlTransaction has completed


Question

Hi,

 

I'm having trouble with the code below used in a .Net 4.5.2 website. The error I get is that the sql transaction is no longer useable. I'm guessing the first insert is failing and the app isn't rolling back the transaction properly.

 

Secondly - the bizarre thing I can pass the exact same values from one machine that will work but from another machine it will not.

 

if you need more info ask away.

 

thanks.

using (SqlConnection connection = new SqlConnection(cs))
            {
                connection.Open();
                SqlCommand cmd = connection.CreateCommand();
                SqlTransaction tran;

                tran = connection.BeginTransaction("sampleTransaction");

                cmd.Connection = connection;
                cmd.Transaction = tran;

                try
                {
                    cmd.CommandText = @"INSERT INTO dbo.sk_srf_headm(order_ref, customer, reason, returningSample, comments, submitted_by, dateReq, requested_by)
                                                     VALUES(@order_ref, @customer, @reason, @returning_sample, @comments, @submitted_by, @date_req, @requested_by)";
                    cmd.Parameters.AddWithValue("@order_ref", order.orderRef);
                    cmd.Parameters.AddWithValue("@customer", order.customer);
                    cmd.Parameters.AddWithValue("@date_req", SqlDbType.DateTime).Value = order.dateReq;
                    cmd.Parameters.AddWithValue("@reason", order.reason);
                    cmd.Parameters.AddWithValue("@returning_sample", order.returningSample);
                    cmd.Parameters.AddWithValue("@comments", order.comments);
                    cmd.Parameters.AddWithValue("@submitted_by", order.salesExec);
                    cmd.Parameters.AddWithValue("@requested_by", order.salesExecFor);
                    cmd.ExecuteNonQuery();

                    int line_no = 1;
                    foreach (orderItem item in order.Items.getItems())
                    {
                        cmd.CommandText = @"INSERT INTO dbo.sk_srf_detm(order_ref, line_no, product, description, quantity, oc_qty, freeStock, locations)
                                VALUES(@srfRef, @line_no, @product, @description, @quantity, @oc_qty, @freeStock, @locations)";
                        cmd.Parameters.AddWithValue("@srfRef", order.orderRef);
                        cmd.Parameters.AddWithValue("@line_no", line_no);
                        cmd.Parameters.AddWithValue("@product", item.productNumber);
                        cmd.Parameters.AddWithValue("@description", item.description);
                        cmd.Parameters.AddWithValue("@quantity", item.quantity);
                        cmd.Parameters.AddWithValue("@oc_qty", item.oc_qty);
                        cmd.Parameters.AddWithValue("@freeStock", item.freeStock);
                        cmd.Parameters.AddWithValue("@locations", item.locations);
                        cmd.ExecuteNonQuery();
                        cmd.Parameters.Clear();
                        line_no++;
                    }
                    tran.Commit();
                    return true;
                }
                catch (Exception ex)
                {
                    try
                    {
                        tran.Rollback();                        
                    }
                    catch
                    {

                    }
                    return false;
                }
            }

 

Link to comment
https://www.neowin.net/forum/topic/1295266-c-sqltransaction-has-completed/
Share on other sites

Recommended Posts

  • 0
1 hour ago, DevTech said:

Um, don't forget that if you have critical code in a Javascript button click event it will not execute if the user submits the form using the Enter key...

 

That isn't a client side click event. 

  • 0
1 hour ago, adrynalyne said:

That isn't a client side click event. 

It's been so long since I have done the ancient ASP.NET WebForms with all of it's behind the scenes wizardry. That control will generate a payload of Javascript code to do all sorts of client-side things which presumably will handle the enter key along with a host of side effects that are version and patch level dependant and a whole host of other fun stuff like ViewState in the megabytes and gosh it was all an impressive accomplishment in some weird mad scientist kind of way that I still have a tiny soft spot in my heart for but would not be able to bring myself to actually use again because the mad scientist in me would also insist on a WPF XBAP payload which was the most beautiful thing you could deliver in a web browser and then HTML5 dumped the ugliest possible acid trip of cobbled together programming on us as a blight upon humanity for sins we couldn't possibly have committed...

 

Just an idle thought on <asp:Button runat="my brain" />

 

This topic is now closed to further replies.
  • Posts

    • Lilly-Livered American Media Are Scared
    • Really? Despite the memory price rises, nothing can kill it? I thought something would.
    • I think there will be a 27H1 for actual users of 26H1 The 25h2 supports ARM too : Snapdragon X, Snapdragon X Plus and Snapdragon X Elite
    • Poll: Grand Theft Auto VI price predictions, cast your vote by Pulasthi Ariyasinghe After years of waiting, Rockstar will be solidifying the launch date of Grand Theft Auto VI with the launch of pre-orders next week. While the studio has confirmed a date for this occasion, it is yet to attach a price to the highly anticipated game. So let's see what our readers think it will cost at launch. The Grand Theft Auto VI pre-orders will kick off on June 25 for digital and physical editions. Unless some last-minute changes happen, the release date will be November 19, 2026, across Xbox Series X|S and PlayStation 5. Unfortunately, there's still no information about a PC version from the developer or the publisher Take-Two. Now the question becomes, how much will Grand Theft Auto VI cost at launch? The game is predicted by some analysts to be the biggest launch of an entertainment product ever. With the amount of hype that has been built behind it and with ballooning development costs, Take-Two may price this Grand Theft Auto entry differently from other AAA titles. The current price of a AAA game is $69.99. That norm almost rose to $79.99 before calming down. But with such a massive release, Grand Theft Auto VI may be the game that pushes the boundary again. It's also possible that Take-Two keeps the price relatively low to increase the number of players that jump in early and keep them hooked on Grand Theft Auto Online to spend on microtransactions for years to come. Keep in mind that the below poll is asking for a prediction of the standard edition price, not a deluxe or any other special edition that Take-Two will introduce for additional benefits. Also, there is the chance of the company splitting up the campaign and online portions. If you think that will happen, put your vote on what you think will be the total cost of the two. Poll Poll: How much will Grand Theft Auto VI cost? $59.99 $69.99 $79.99 $89.99 $100 or more Submit Vote If you have a very specific prediction in mind, sound off in the comments below.
  • Recent Achievements

    • Week One Done
      Genuinetonerink- Dubai earned a badge
      Week One Done
    • One Month Later
      Genuinetonerink- Dubai earned a badge
      One Month Later
    • One Year In
      hhgygy earned a badge
      One Year In
    • One Month Later
      AMV earned a badge
      One Month Later
    • Week One Done
      AMV earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      513
    2. 2
      +Edouard
      171
    3. 3
      PsYcHoKiLLa
      82
    4. 4
      Steven P.
      74
    5. 5
      Michael Scrip
      72
  • Tell a friend

    Love Neowin? Tell a friend!