Я уже могу добавить новые данные в базу данных и отобразить эту базу данных через datagridview, а я команду обновить datagridview всякий раз, когда я нажимаю кнопку «Добавить» (добавление новых данных в базу данных) , Но он дублирует старые данные с новым.Дублируйте старые данные при обновлении datagridview
Вот скриншот, который показывает его дубликат после добавления новых данных и обновления DataGridView:
В изображении выше, есть дублирующие данные ID «16», каждый раз, когда я введите новое значение и вставьте его в базу данных он добавляет новое (текущее) значение в базу данных, но старое значение будет дублироваться. Поэтому мне нужно выйти из программы и снова запустить ее снова. Но есть ли другие способы решить эту проблему (старые данные не дублируются после добавления новых данных в базу данных и обновления datagridview)?
Вот мой код:
private void ViewDatabase(object sender, EventArgs e)
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string query = "SELECT * FROM [Table]";
conn.Open();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn))
{
adapter.Fill(ds, "Table");
dataGridView1.DataSource = ds.Tables[0];
}
conn.Close();
}
}
private void Add(object sender, EventArgs e)
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string query = "INSERT INTO [Table] ([ProductCode], [Quantity], [Description], [Price]) VALUES (@ProductCode, @Quantity, @Description, @Price)";
conn.Open();
using (OleDbCommand cmd = new OleDbCommand(query, conn))
{
cmd.Parameters.Add("@ProductCode", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["@ProductCode"].Value = this.numericTextBox1.Text;
cmd.Parameters.Add("@Quantity", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["@Quantity"].Value = this.numericUpDown1.Value;
cmd.Parameters.Add("@Description", System.Data.OleDb.OleDbType.VarChar);
cmd.Parameters["@Description"].Value = this.textBox3.Text;
cmd.Parameters.Add("@Price", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["@Price"].Value = this.textBox4.Text;
cmd.ExecuteNonQuery();
if (choice.comboBox1.Text == "English")
{
System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
sound.Play();
DialogResult dialogResult = MessageBox.Show("Added Successfully!", "Success", MessageBoxButtons.OK);
if (dialogResult == DialogResult.OK)
{
ViewDatabase(sender, e);
ClearTextBoxes(sender, e);
}
}
хаи Ahsan sallem, я уже попробовал ваш код, добавив 'dataGridView.DataSource = NULL;.' 'В ниже adapter.Fill (DS, "Таблица")' , но он по-прежнему дублирует старые данные. – Kaoru
попробуйте это adapter.Fill (ds, «Таблица»); dataGridView1.DataSource = null; dataGridView1.Refresh(); И переместить эту строку "dataGridView1.DataSource = ds.Tables [0];" За пределами используемого блока он вложен. –
Нет, он все еще не может @Ahsan Saleem – Kaoru