Prevent Duplicate record insert in database if record exists in WPF Application using C# and VB.Net

Last Reply 3 months ago By dharmendr

Posted 3 months ago

Hello all,

I have a C# WPF application that I log into and I pass the user to the next screen. Then I click to go to a profile screen and if the user already has profile data I autopopulate all the fields. In my profile screen I have it so when you set the combobox to ‘Yes’ it creates the customer in the database. When you click the save button it just updates all the data. When I load the controls it sets the combobox to ‘Yes’ and it tries to recreate the customer in the DB. I get a error: “Violation of UNIQUE KEY constraint. Cannot insert duplicate key into DB…” I would like to check if the user already exists in the DB and if it does so it WILL NOT create a new customer so this error will not be thrown. Or any other way to get around this. Not sure if I should check for this specific error and just console.log it or any suggestions would be appreciated.

Thank you. 

        //combobox selectionchanged when ‘yes’ add new customer        					
        private void CboCustomer_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            string cboValue = "";
            if (CboCustomer.SelectedIndex > 0)
                cboValue = ((ComboBoxItem)CboCustomer.SelectedItem).Content.ToString();

            if(cboValue.Equals("Yes")) // || if (CboCustomer.SelectedItem.ToString().Equals("Yes"))
            {
                boolIsCustomer = true;
                User addCustomer = null;
                Customer newCustomer = null;

                //MessageBoxResult result = MessageBox.Show("Updating database to customer status.",
                //    "Customer Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
                //if (result == MessageBoxResult.Yes)
                //{
                if (currentUser.IsCustomer == true)
                {
                    try
                    {                          
                        Customer custTestID = UsersDB.ReadCustomerById(currentUser.UserID);

                        if(currentUser.UserID == custTestID.UserID)
                        {
                            return;
                        }
                        else
                        {
                            addCustomer = new User(currentUser.UserID, currentUser.Username,
                            currentUser.Password, currentUser.IsAdmin, currentUser.UserCreatedDate, boolIsCustomer);
                            UsersDB.UpdateCurrentUser(addCustomer);

                            newCustomer = new Customer(currentUser.UserID, currentUser.Username, TextboxLastName.Text,
                                                    TextboxAddress.Text, TextboxCity.Text, null, 
                                                    TextboxZip.Text, TextEmailAddress.Text);
                            UsersDB.CreateCustomer(newCustomer);
                        }
                    }
                    catch(Exception ex) { MessageBox.Show(ex.Message.ToString()); }
                }
                else
                {
                    try
                    {   //UPDATE User so 'IsCustomer' property is set to True.
                        addCustomer = new User(currentUser.UserID, currentUser.Username, currentUser.Password,
                                                currentUser.IsAdmin, currentUser.UserCreatedDate, boolIsCustomer);
                        UsersDB.UpdateCurrentUser(addCustomer);
                        //CREATE Customer from current User linking together by 'UserId'
                        newCustomer = new Customer(currentUser.UserID, currentUser.Username, TextboxLastName.Text,
                                                    TextboxAddress.Text, TextboxCity.Text, null, TextboxZip.Text,
                                                    TextEmailAddress.Text);
                        UsersDB.CreateCustomer(newCustomer);
                    }
                    catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); }
                }
            }
        }

 

Posted 3 months ago

Hi bigbear,

You can not Insert same value again if you assigned Column as Unique key. Unique key constraints are used to ensure that data is not duplicated in two rows in the database. One row in the database is allowed to have null for the value of the unique key constraint.

If you try to insert or update column with same value exist it will throw the error at insert or update time of Violation of UNIQUE KEY constraint.

For checking record exist in database refer elow links.

Prevent Duplicate record insert in database if record exists in ASP.Net