简体   繁体   English

在插入之前检查 DataGridview 中的值是否与数据库表/模式兼容

[英]Check if values in DataGridview are compatible with database table/schema BEFORE Inserting

I have a DatagridView which gets values from excel files.我有一个 DatagridView,它从 excel 文件中获取值。 After the values are shown in the datagridview, the user can add/alter them and when the user presses save, my code inserts the table to my database.在 datagridview 中显示值后,用户可以添加/更改它们,当用户按下保存时,我的代码会将表插入到我的数据库中。 I have surrounded my code with try catch so it stops when there is an error because of the values but when the user corrects the data and presses save again, the first rows that have been inserted are inserted again to the database.我用 try catch 包围了我的代码,因此当由于值而出现错误时它会停止,但是当用户更正数据并再次按下保存时,已插入的第一行将再次插入到数据库中。 My question is, how can i write a code so it doesn't duplicate the rows that it has inserted already?我的问题是,我如何编写代码,使其不会重复已插入的行? Thank you in advance.先感谢您。 My code that inserts is down below.我插入的代码在下面。

      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");
        }

Declare a static variable count in your class and initialize it to 0在类中声明一个静态变量计数并将其初始化为 0

static int count=0;

Comments and changes highlighted by ***注释和更改以 *** 突出显示

try
        {

            for (int i = count; i < dataGridView1.Rows.Count - 1; i++)//***start the for loop by count***
            {
                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();
                count+=1;//***increment the count on every successful insert.***

            }

            MessageBox.Show("Veriler Kaydedildi");
            this.Hide();
            //GirisFormu a = new GirisFormu();
           // a.ShowDialog();

        }
        catch (Exception)
        {

            MessageBox.Show("bir hata oluştu, tekrar deneyiniz");
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM