У меня есть DatagridView, который получает значения из файлов Excel. После того, как значения показаны в сетке данных, пользователь может добавить / изменить их, и когда пользователь нажимает сохранить, мой код вставляет таблицу в мою базу данных. Я окружил свой код попыткой catch, поэтому он останавливается при возникновении ошибки из-за значений, но когда пользователь исправляет данные и снова нажимает сохранить, первые вставленные строки снова вставляются в базу данных. У меня вопрос, как я могу написать код, чтобы он не дублировал уже вставленные строки? Заранее спасибо. Мой код, который вставляется внизу.
try
{
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
OleDbCommand cmd = new OleDbCommand(commandText, cnn);
Guid g = Guid.NewGuid();
//veritabanına verileri atıyoruz
cmd.Parameters.AddWithValue("@guidkodu", g);
cmd.Parameters.AddWithValue("@faturatarihi", belgetarihigetir((dataGridView1.Rows[i].Cells[0].Value.ToString()))); //datetime a cast ediliyor
cmd.Parameters.AddWithValue("@faturano", (dataGridView1.Rows[i].Cells[1].Value).ToString());
cmd.Parameters.AddWithValue("@vkntckn", (dataGridView1.Rows[i].Cells[2].Value).ToString());
cmd.Parameters.AddWithValue("@tur", (dataGridView1.Rows[i].Cells[3].Value).ToString());
//kdv değerleri yoksa veritabanına null,varsa değerini atıyoruz
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[4].Value).ToString()))
{
cmd.Parameters.AddWithValue("@kdv0matrahi", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@kdv0matrahi", ToNullableFloat((dataGridView1.Rows[i].Cells[4].Value).ToString()));
}
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[5].Value).ToString()))
{
cmd.Parameters.AddWithValue("@kdv1matrahi", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@kdv1matrahi", ToNullableFloat((dataGridView1.Rows[i].Cells[5].Value).ToString()));
}
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[6].Value).ToString()))
{
cmd.Parameters.AddWithValue("@kdv1tutar", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@kdv1tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[6].Value).ToString()));
}
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[7].Value).ToString()))
{
cmd.Parameters.AddWithValue("@kdv8matrah", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@kdv8matrah", ToNullableFloat((dataGridView1.Rows[i].Cells[7].Value).ToString()));
}
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[8].Value).ToString()))
{
cmd.Parameters.AddWithValue("@kdv8tutar", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@kdv8tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[8].Value).ToString()));
}
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[9].Value).ToString()))
{
cmd.Parameters.AddWithValue("@kdv18matrah", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@kdv18matrah", ToNullableFloat((dataGridView1.Rows[i].Cells[9].Value).ToString()));
}
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[10].Value).ToString()))
{
cmd.Parameters.AddWithValue("@kdv18tutar", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@kdv18tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[10].Value).ToString()));
}
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[11].Value).ToString()))
{
cmd.Parameters.AddWithValue("@oiv", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@oiv", ToNullableFloat((dataGridView1.Rows[i].Cells[11].Value).ToString()));
}
if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[12].Value).ToString()))
{
cmd.Parameters.AddWithValue("@faturatutari", System.DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@faturatutari", ToNullableFloat((dataGridView1.Rows[i].Cells[12].Value).ToString()));
}
//cmd.Parameters.AddWithValue("@islemtarihi", zaman);
cmd.ExecuteNonQuery();
}
MessageBox.Show("Veriler Kaydedildi");
this.Hide();
//GirisFormu a = new GirisFormu();
// a.ShowDialog();
}
catch (Exception)
{
MessageBox.Show("bir hata oluştu, tekrar deneyiniz");
}