C# 在c中将数据从datatable插入数据库时出现问题#

C# 在c中将数据从datatable插入数据库时出现问题#,c#,asp.net,sql-server,sqlbulkcopy,C#,Asp.net,Sql Server,Sqlbulkcopy,我有一个3列的Gridview,我在“添加”按钮的帮助下添加空行。现在,我正在尝试将网格中输入的数据插入到表中。这是我的密码 SqlConnection con = new SqlConnection(ConfigurationManager .ConnectionStrings["gridconnection"] .ConnectionString); public void SetInitialRow() { DataTable dt = new DataTable(

我有一个3列的Gridview,我在“添加”按钮的帮助下添加空行。现在,我正在尝试将网格中输入的数据插入到表中。这是我的密码

SqlConnection con = new SqlConnection(ConfigurationManager
    .ConnectionStrings["gridconnection"]
    .ConnectionString);
public void SetInitialRow()
{
    DataTable dt = new DataTable();
    DataRow dr = null;
    //dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
    dt.Columns.Add(new DataColumn("Column1", typeof(string)));
    dt.Columns.Add(new DataColumn("Column2", typeof(string)));
    dt.Columns.Add(new DataColumn("Column3", typeof(string)));
    dr = dt.NewRow();
   // dr["RowNumber"] = 1;
    dr["Column1"] = string.Empty;
    dr["Column2"] = string.Empty;
    dr["Column3"] = string.Empty;
    dt.Rows.Add(dr);

    //Store the DataTable in ViewState
    ViewState["CurrentTable"] = dt;

    Gridview1.DataSource = dt;
    Gridview1.DataBind();
}

public void AddNewRowToGrid()
{
    int rowIndex = 0;

    if (ViewState["CurrentTable"] != null)
    {
        DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
        DataRow drCurrentRow = null;
        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");

                drCurrentRow = dtCurrentTable.NewRow();
                drCurrentRow["RowNumber"] = i + 1;

                dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text;
                dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text;
                dtCurrentTable.Rows[i - 1]["Column3"] = box3.Text;

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

            Gridview1.DataSource = dtCurrentTable;
            Gridview1.DataBind();
        }
    }
    else
    {
        Response.Write("ViewState is null");
    }

    //Set Previous Data on Postbacks
    SetPreviousData();
}

protected void SetPreviousData()
{
    int rowIndex = 0;
    if (ViewState["CurrentTable"] != null)
    {
        DataTable dt = (DataTable)ViewState["CurrentTable"];
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                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");

                box1.Text = dt.Rows[i]["Column1"].ToString();
                box2.Text = dt.Rows[i]["Column2"].ToString();
                box3.Text = dt.Rows[i]["Column3"].ToString();

                rowIndex++;
            }
        }
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        SetInitialRow();
    }
}

protected void ButtonAdd_Click(object sender, EventArgs e)
{
    AddNewRowToGrid();
}

protected void ButtonAdd_Click1(object sender, EventArgs e)
{
    DataTable dt = new DataTable();

    DataRow dr = null;

    dt.Columns.Add(new DataColumn("Column1", typeof(string)));
    dt.Columns.Add(new DataColumn("Column2", typeof(string)));
    dt.Columns.Add(new DataColumn("Column3", typeof(string)));
    dr = dt.NewRow();
    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 = "GridExcel";
            //bulkCopy.ColumnMappings.Add(Column1, c.Column2, c.Column3);
            SqlBulkCopyColumnMapping Column = 
                new SqlBulkCopyColumnMapping("Column1", "Column1");
            bulkCopy.ColumnMappings.Add(Column);
            SqlBulkCopyColumnMapping Column2nd = 
               new SqlBulkCopyColumnMapping("Column2", "Column2");
            bulkCopy.ColumnMappings.Add(Column2nd);
            SqlBulkCopyColumnMapping Column3rd = 
               new SqlBulkCopyColumnMapping("Column3", "Column3");
            bulkCopy.ColumnMappings.Add(Column3rd);
            try
            {
                bulkCopy.WriteToServer(dt);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
SqlConnection con=新的SqlConnection(ConfigurationManager
.ConnectionString[“网格连接”]
.连接字符串);
public void SetInitialRow()
{
DataTable dt=新的DataTable();
数据行dr=null;
//添加(新的数据列(“行数”,typeof(字符串));
Add(新的数据列(“Column1”,typeof(string));
Add(新的数据列(“Column2”,typeof(string));
Add(新的数据列(“Column3”,typeof(string));
dr=dt.NewRow();
//dr[“行数”]=1;
dr[“Column1”]=string.Empty;
dr[“Column2”]=string.Empty;
dr[“Column3”]=string.Empty;
dt.Rows.Add(dr);
//将数据表存储在ViewState中
视图状态[“当前表”]=dt;
Gridview1.DataSource=dt;
Gridview1.DataBind();
}
public void AddNewRowToGrid()
{
int rowIndex=0;
如果(ViewState[“CurrentTable”]!=null)
{
DataTable dtCurrentTable=(DataTable)视图状态[“CurrentTable”];
DataRow drCurrentRow=null;
如果(dtCurrentTable.Rows.Count>0)
{
对于(int i=1;i 0)
{
对于(int i=0;i
GridExcel是我的数据库表名,列名为Column1、Column2、Column3。问题是数据没有插入到表中。请帮助

protected void ButtonAdd_Click1(object sender, EventArgs e)
 {
    if (ViewState["CurrentTable"] != null)
        {
        DataTable dt = (DataTable)ViewState["CurrentTable"];       
        if (dt.Rows.Count > 0)
        {
            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 = "GridExcel";
                    //bulkCopy.ColumnMappings.Add(Column1, c.Column2, c.Column3);
                    SqlBulkCopyColumnMapping Column =
                        new SqlBulkCopyColumnMapping("Column1", "Column1");
                    bulkCopy.ColumnMappings.Add(Column);
                    SqlBulkCopyColumnMapping Column2nd =
                       new SqlBulkCopyColumnMapping("Column2", "Column2");
                    bulkCopy.ColumnMappings.Add(Column2nd);
                    SqlBulkCopyColumnMapping Column3rd =
                       new SqlBulkCopyColumnMapping("Column3", "Column3");
                    bulkCopy.ColumnMappings.Add(Column3rd);
                    try
                    {
                        bulkCopy.WriteToServer(dt);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
        }
    }
 }

我不熟悉ASP.Net,但更新了您的按钮D_Click1,这可能会解决您的问题,这工作正常,并解决您的问题请检查此项

是否收到任何错误消息?@varunbabbopzhath no您的Add方法创建了一个空数据表您没有从ViewState检索数据您的表
dt
有0行,因此插入了0行。我猜您还没有从gridview中读取该行。您正在盲目地创建新的datatable并将其更新到DB,请检查您的ButtonAd_Click1方法,并将datatable作为gridview数据源,这将解决您的问题