将dataGridView1里面批量数据插入sql数据库前去重复,防止主健报错。

将dataGridView1里面批量数据插入sql数据库前去重复,防止主健报错,大概要求就是重复的数据抛出记录,不重复的数据插入,成功的加某列的内容+导入成功richTextbox显示成功,重复的也是这样,新手需要码。

插眼

大体思路是将dataGridView1里面的数据先进行去重,记录重复的数据,以及获取去重后的数据,然后主键以GUID或自增的方式,连接数据库进行循环插入操作。

 //声明一个字典,用于记录去重后的数据
            Dictionary<string, int> addDict = new Dictionary<string, int>();


            //记录要删除掉的索引值
            List<int> removeList = new List<int>();
            //循环datagrid
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                //判断字典中存在了相同的值.就把当前的索引添加到待删除的记录中,这里判断的是Md5Code列
                if (addDict.ContainsKey(dataGridView1.Rows[i].Cells[1].Value.ToString()))
                {
                    removeList.Add(i);
                }
                else
                {
                    //不存在就添加到字典中
                    addDict.Add(dataGridView1.Rows[i].Cells[1].Value.ToString(), i);
                }
            }


            //循环要删除的数据,反向删除,否则索引会有问题
            for (int j = removeList.Count - 1; j >= 0; j--)
            {
                //删除掉不用的行
                dataGridView1.Rows.RemoveAt(removeList[j]);
                //在这里可以记录删除掉的数据,并进行提示
            }
            removeList.Clear();
            addDict.Clear();

            //此时的dataGridView1就是去重后的数据,至于防止主键报错的话,不要在dataGridView1中操作主键,把主键设置成自增或者是GUID

            //将dataGridView1的数据导入到SQL数据库中   ,声明数据库连接字符串
            SqlConnection conn = new SqlConnection("server=yoti,6060; user id = sa; pwd = 2950001; database = hbposev9");
            try
            {
                conn.Open();
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    SqlCommand comm = new SqlCommand();
                    string gdh = this.dataGridView1.Rows[i].Cells[0].Value.ToString().Trim();
                    string pn = this.dataGridView1.Rows[i].Cells[1].Value.ToString().Trim();
                    //这里是你的插入的sql语句
                    string id = Guid.NewGuid().ToString();//如果使用的是GUID,这样获取ID,如果是自增,注释掉
                    string SqlStr = "INSERT testbiao(sheet222,名称) VALUES ('" + gdh + "','" + pn + "')";
                    comm.CommandText = SqlStr;
                    comm.Connection = conn;
                    comm.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("更新失败,失败原因:" + ex.Message);
            }
            finally
            {
                conn.Close();
            }