Amar chand123 Ответов: 2

Остановить вставку дублированных записей в базу данных на языке Си#


как я перестаю сохранять дублированные записи в таблице базы данных Access
мне нужно если RollNumber существует в моей базе данных то данные не сохраняются

Что я уже пробовал:

private void SaveData()
        {
            String connstring = ConfigurationManager.ConnectionStrings["FincorpData"].ConnectionString;
            string cmdstring = "insert into customer (RollNumber, Name, FatherName, Address, Address1, MobileNo, SecMobileNo, City, District, State, PinCode, Remark) VALUES (@RollNumber, @Name, @FatherName, @Address, @Address1, @MobileNo, @SecMobileNo, @City, @District, @State, @PinCode, @Remark)";
          
            using (OleDbConnection con = new OleDbConnection(connstring))
            {
                using (OleDbCommand cmd = new OleDbCommand(cmdstring, con))
                {
                    con.Open();

                    cmd.Parameters.AddWithValue("@RollNumber", textBoxRollNumber.Text);
                    cmd.Parameters.AddWithValue("@Name", txtName.Text);
                    cmd.Parameters.AddWithValue("@FatherName", txtFatherName.Text);
                    cmd.Parameters.AddWithValue("@Address", txtAddress.Text);
                    cmd.Parameters.AddWithValue("@Address1", txtAddress1.Text);
                    cmd.Parameters.AddWithValue("@MobileNo", txtMobileNo.Text);
                    cmd.Parameters.AddWithValue("@SecMobileNo", txtSecMobileno.Text);
                    cmd.Parameters.AddWithValue("@City", txtCity.Text);
                    cmd.Parameters.AddWithValue("@District", txtDistrict.Text);
                    cmd.Parameters.AddWithValue("@State", txtState.Text);
                    cmd.Parameters.AddWithValue("@PinCode", txtPinCode.Text);
                    cmd.Parameters.AddWithValue("@Remark", txtRemark.Text);

                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Recourd is saved", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    con.Close();
                }   
            }
        }

2 Ответов

Рейтинг:
2

Wendelius

Чтобы безопасно предотвратить дублирование записей, вы должны использовать ограничения в базе данных. Типичные ограничения см. В разделе Ограничения SQL[^]

Что касается предотвращения дубликатов вы должны использовать либо Ограничение первичного ключа SQL[^] или Ограничение на уникальность данных в SQL [^].

Это единственный надежный способ убедиться, что дубликатов не существует.

Что касается вставки данных, то подход грубой силы заключается в том, чтобы вставить данные, и если вы получаете сообщение об ошибке, указывающее, что ограничение предотвратило вставку, то выполните обновление.


Maciej Los

5ed!

Рейтинг:
18

phil.o

Вы должны сделать это SELECT сначала выполните команду поиска соответствующего идентификатора.
Если запрос не возвращает ни одной строки, то идентификатор не существует, и вы можете выдать свой идентификатор. INSERT команда. В противном случае вам следует выполнить UPDATE командуйте вместо этого.


Richard MacCutchan

Надеюсь, это не была дикая догадка.

Maciej Los

Этот ответ звучит разумно.
И ваша догадка верна ;)

Richard MacCutchan

Я имел в виду предыдущий обмен мнениями с Филом, который мы могли бы назвать "анекдотом".

Maciej Los

;)

phil.o

На этот раз не было, действительно :)