使用sqlbulkcopy将重复值插入表中

时间:2017-06-17 06:34:58

标签: gridview bulkinsert sqlbulkcopy bulkupdate

我创建了gridview并将值插入到datatable然后使用sqlbulkcopy插入数据库但是当我向网格添加新行并单击“保存”按钮时,先前的行和新添加的行将插入到数据库中。任何人都可以帮我解决如何只插入新添加的行并在点击“保存”按钮时更新前面的行。

这是我的代码

protected void save_Click(object sender, EventArgs e)
{
    int rowIndex = 0;
    if (ViewState["CurrentTable"] != null)
    {
        DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
        //dtCurrentTable.Clear();
        if (dtCurrentTable.Rows.Count > 0)
        {
            for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
            {
                //extract the TextBox values
                TextBox box1 = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox1");
                TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2");
                TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3");
                TextBox box4 = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("TextBox4");
                TextBox box5 = (TextBox)Gridview1.Rows[rowIndex].Cells[5].FindControl("TextBox5");
                TextBox box6 = (TextBox)Gridview1.Rows[rowIndex].Cells[6].FindControl("TextBox6");
                TextBox box7 = (TextBox)Gridview1.Rows[rowIndex].Cells[7].FindControl("TextBox7");
                TextBox box8 = (TextBox)Gridview1.Rows[rowIndex].Cells[8].FindControl("TextBox8");
                TextBox box9 = (TextBox)Gridview1.Rows[rowIndex].Cells[9].FindControl("TextBox9");
                TextBox box10 = (TextBox)Gridview1.Rows[rowIndex].Cells[10].FindControl("TextBox10");
                TextBox box11 = (TextBox)Gridview1.Rows[rowIndex].Cells[11].FindControl("TextBox11");
                TextBox box12 = (TextBox)Gridview1.Rows[rowIndex].Cells[12].FindControl("TextBox12");
                TextBox box13 = (TextBox)Gridview1.Rows[rowIndex].Cells[13].FindControl("TextBox13");

                //drCurrentRow = dtCurrentTable.NewRow();
                //drCurrentRow["RowNumber"] = i + 1;
                dtCurrentTable.Rows[i - 1]["stn_id"] = rowIndex + 1;
                dtCurrentTable.Rows[i - 1]["unitname"] = box1.Text;
                dtCurrentTable.Rows[i - 1]["weldmet"] = box2.Text;
                dtCurrentTable.Rows[i - 1]["mfgparts"] = box3.Text;
                dtCurrentTable.Rows[i - 1]["mylar"] = box4.Text;
                dtCurrentTable.Rows[i - 1]["pin"] = box5.Text;
                dtCurrentTable.Rows[i - 1]["stdpin"] = box6.Text;
                dtCurrentTable.Rows[i - 1]["stdparts"] = box7.Text;
                dtCurrentTable.Rows[i - 1]["ftweldmet"] = box8.Text;
                dtCurrentTable.Rows[i - 1]["ftmfgparts"] = box9.Text;
                dtCurrentTable.Rows[i - 1]["ftmylar"] = box10.Text;
                dtCurrentTable.Rows[i - 1]["ftpin"] = box11.Text;
                dtCurrentTable.Rows[i - 1]["ftstdpin"] = box12.Text;
                dtCurrentTable.Rows[i - 1]["ftstdparts"] = box13.Text;

                rowIndex++;
            } //for
            //dtCurrentTable.Rows.Add(drCurrentRow);
            ViewState["CurrentTable"] = dtCurrentTable;

            Gridview1.DataSource = dtCurrentTable;
            Gridview1.DataBind();
            // dtCurrentTable.Clear();
        }//dtcurrenttable


        string consString = ConfigurationManager.ConnectionStrings["gridconnection"].ConnectionString;
        using (SqlConnection connection = new SqlConnection(consString))
        {
            connection.Open();
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
            {
                //foreach (DataColumn c in dt.Columns)
                //   // bulkCopy.ColumnMappings.Add(c.Column1, c.Column2, c.Column3);

                bulkCopy.DestinationTableName = "partexcel";
                //bulkCopy.ColumnMappings.Add(Column1, c.Column2, c.Column3);
                SqlBulkCopyColumnMapping stnid = new SqlBulkCopyColumnMapping("stn_id", "stn_id");
                bulkCopy.ColumnMappings.Add(stnid);
                SqlBulkCopyColumnMapping objunitname = new SqlBulkCopyColumnMapping("unitname", "unitname");
                bulkCopy.ColumnMappings.Add(objunitname);
                SqlBulkCopyColumnMapping objweldmet = new SqlBulkCopyColumnMapping("weldmet", "weldmet");
                bulkCopy.ColumnMappings.Add(objweldmet);
                SqlBulkCopyColumnMapping objmfgparts = new SqlBulkCopyColumnMapping("mfgparts", "mfgparts");
                bulkCopy.ColumnMappings.Add(objmfgparts);
                SqlBulkCopyColumnMapping objmylar = new SqlBulkCopyColumnMapping("mylar", "mylar");
                bulkCopy.ColumnMappings.Add(objmylar);
                SqlBulkCopyColumnMapping objpin = new SqlBulkCopyColumnMapping("pin", "pin");
                bulkCopy.ColumnMappings.Add(objpin);
                SqlBulkCopyColumnMapping objstdpin = new SqlBulkCopyColumnMapping("stdpin", "stdpin");
                bulkCopy.ColumnMappings.Add(objstdpin);
                SqlBulkCopyColumnMapping objstdparts = new SqlBulkCopyColumnMapping("stdparts", "stdparts");
                bulkCopy.ColumnMappings.Add(objstdparts);
                SqlBulkCopyColumnMapping objftweldmet = new SqlBulkCopyColumnMapping("ftweldmet", "ftweldmet");
                bulkCopy.ColumnMappings.Add(objftweldmet);
                SqlBulkCopyColumnMapping objftmfgparts = new SqlBulkCopyColumnMapping("ftmfgparts", "ftmfgparts");
                bulkCopy.ColumnMappings.Add(objftmfgparts);
                SqlBulkCopyColumnMapping objftmylar = new SqlBulkCopyColumnMapping("ftmylar", "ftmylar");
                bulkCopy.ColumnMappings.Add(objftmylar);
                SqlBulkCopyColumnMapping objftpin = new SqlBulkCopyColumnMapping("ftpin", "ftpin");
                bulkCopy.ColumnMappings.Add(objftpin);
                SqlBulkCopyColumnMapping objftstdpin = new SqlBulkCopyColumnMapping("ftstdpin", "ftstdpin");
                bulkCopy.ColumnMappings.Add(objftstdpin);
                SqlBulkCopyColumnMapping objftstdparts = new SqlBulkCopyColumnMapping("ftstdparts", "ftstdparts");
                bulkCopy.ColumnMappings.Add(objftstdparts);

                try
                {

                    bulkCopy.WriteToServer(dtCurrentTable);

                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
          }
        }
      }

0 个答案:

没有答案