Link to home
Create AccountLog in
Avatar of Murray Brown
Murray BrownFlag for United Kingdom of Great Britain and Northern Ireland

asked on

ASP.net C# SQL variable name has already been declared

Hi

In the following C# code of my ASP.net web forms wen app I get the error "The variable name '@InstalmentNo' has already been declared, Variable names must be unique within a query batch oe stored procedure


            string cs = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;


            using (SqlConnection connection = new SqlConnection(cs))

            {


                connection.Open();


                // Start a local transaction

                SqlTransaction transaction = connection.BeginTransaction("SampleTransaction");

                try

                {

                

                    // Assign the transaction object to the command



                    string insertQuery = $@"INSERT INTO [Instalments] ([InstalmentNo],[CheckList1], [Gross_Premium], [Admin_Fee], [Premium_Due_Date],[Net_to_Landmark_Incl_Tax])

                                        VALUES (@InstalmentNo,@CheckList1, @Gross_Premium, @Admin_Fee, @Premium_Due_Date, @Net_to_Landmark_Incl_Tax)";



                    using (SqlCommand insertCommand = new SqlCommand(insertQuery, connection))

                    {


                        //SqlParameter outputParam = insertCommand.Parameters.Add("@ID", SqlDbType.Int); //NEW

                        //outputParam.Direction = ParameterDirection.Output;//NEW



                        // Assign the transaction object to the insertCommand

                        insertCommand.Transaction = transaction;


                        //======================== Instalment 1 =================================


                        insertCommand.Parameters.Add("@InstalmentNo", SqlDbType.Int).Value = 1;


                        insertCommand.Parameters.Add("@CheckList1", SqlDbType.Bit).Value = 1;


                        if (Decimal.TryParse(GPS1.Text, out Decimal xGross_Premium_Split1))

                        {

                            insertCommand.Parameters.Add("@Gross_Premium", SqlDbType.Decimal).Value = xGross_Premium_Split1;

                        }

                        else

                        {

                            insertCommand.Parameters.Add("@Gross_Premium", SqlDbType.Decimal).Value = 0;

                        }


                        if (Decimal.TryParse(AFS1.Text, out Decimal xAdmin_Fee1))

                        {

                            insertCommand.Parameters.Add("@Admin_Fee", SqlDbType.Decimal).Value = xAdmin_Fee1;

                        }

                        else

                        {

                            insertCommand.Parameters.Add("@Admin_Fee", SqlDbType.Decimal).Value = 0;

                        }


                        DateTime dPremium_Due_Date1;

                        if (DateTime.TryParseExact(PDD1.Text, "yyyy-MM-dd", null, System.Globalization.DateTimeStyles.None, out dPremium_Due_Date1))

                        {

                            insertCommand.Parameters.Add("@Premium_Due_Date", SqlDbType.DateTime2).Value = dPremium_Due_Date1;

                        }

                        else

                        {

                            insertCommand.Parameters.Add("@Premium_Due_Date", SqlDbType.DateTime2).Value = DBNull.Value;

                        }


                        //NOTE Use NTL for Instalment Premium Amount as is same as Net_to_Landmark_Incl_Tax

                        if (Decimal.TryParse(NTL1.Text, out Decimal xInstalment_Premium_Amount1))

                        {

                            insertCommand.Parameters.Add("@Net_to_Landmark_Incl_Tax", SqlDbType.Decimal).Value = xInstalment_Premium_Amount1;

                        }

                        else

                        {

                            insertCommand.Parameters.Add("@Net_to_Landmark_Incl_Tax", SqlDbType.Decimal).Value = 0;

                        }


                        insertCommand.ExecuteNonQuery();


                        //string id = insertCommand.Parameters["@ID"].Value.ToString(); //NEW

                        //this.lblIstID.Text = id; //NEW


                        //======================== Instalment 1 (End) =================================


                        //======================== Instalment 2 =================================

                        if (chk1_2.Checked == true)

                        {


                            insertCommand.Parameters.Add("@InstalmentNo", SqlDbType.Int).Value = 2;


                            insertCommand.Parameters.Add("@CheckList2", SqlDbType.Bit).Value = 1;


                            if (Decimal.TryParse(GPS2.Text, out Decimal xGross_Premium_Split2))

                            {

                                insertCommand.Parameters.Add("@Gross_Premium", SqlDbType.Decimal).Value = xGross_Premium_Split2;

                            }

                            else

                            {

                                insertCommand.Parameters.Add("@Gross_Premium", SqlDbType.Decimal).Value = 0;

                            }


                            if (Decimal.TryParse(AFS2.Text, out Decimal xAdmin_Fee2))

                            {

                                insertCommand.Parameters.Add("@Admin_Fee", SqlDbType.Decimal).Value = xAdmin_Fee2;

                            }

                            else

                            {

                                insertCommand.Parameters.Add("@Admin_Fee", SqlDbType.Decimal).Value = 0;

                            }


                            DateTime dPremium_Due_Date2;

                            if (DateTime.TryParseExact(PDD2.Text, "yyyy-MM-dd", null, System.Globalization.DateTimeStyles.None, out dPremium_Due_Date2))

                            {

                                insertCommand.Parameters.Add("@Premium_Due_Date", SqlDbType.DateTime2).Value = dPremium_Due_Date2;

                            }

                            else

                            {

                                insertCommand.Parameters.Add("@Premium_Due_Date", SqlDbType.DateTime2).Value = DBNull.Value;

                            }


                            //NOTE Use NTL for Instalment Premium Amount as is same as Net_to_Landmark_Incl_Tax

                            if (Decimal.TryParse(NTL2.Text, out Decimal xInstalment_Premium_Amount2))

                            {

                                insertCommand.Parameters.Add("@Net_to_Landmark_Incl_Tax", SqlDbType.Decimal).Value = xInstalment_Premium_Amount2;

                            }

                            else

                            {

                                insertCommand.Parameters.Add("@Net_to_Landmark_Incl_Tax", SqlDbType.Decimal).Value = 0;

                            }


                            insertCommand.ExecuteNonQuery();


                        }

                        //======================== Instalment 2 (End) =================================


                    }



                    // Commit the transaction if all operations are successful

                    transaction.Commit();

                }

                catch (Exception ex)

                {

                    Console.WriteLine(ex.Message);


                    transaction.Rollback("SampleTransaction");

                    // Rollback the transaction if there's an exception


                }



ASKER CERTIFIED SOLUTION
Avatar of David H.H.Lee
David H.H.Lee
Flag of Malaysia image

Link to home
membership
Create an account to see this answer
Signing up is free. No credit card required.
Create Account
Avatar of Murray Brown

ASKER

Thanks very much for the help David. It worked well. Murray