将Gridview数据保存到数据库

时间:2018-10-27 06:33:32

标签: c# asp.net sql-server ado.net

我有一个Gridview,我想保存在另一个表中

我的代码是

protected void upload_Click(object sender, EventArgs e)
{
    string query1 = "INSERT INTO tbl_Pre_Y1_Bus1 (CRITICAL,SPECIFICATION, [1],[2],[3],[4],[5],TMLCAL) VALUES (@CRITICAL, @SPECIFICATION, @[1], @[2], @[3], @[4], @[5], @TMLCAL)";

    foreach (GridViewRow row in GridView2.Rows)
    {
        using (SqlCommand cmd = new SqlCommand(query1))
        {
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;

            cmd.Parameters.AddWithValue("@CRITICAL", row.Cells[0].ToString());
            cmd.Parameters.AddWithValue("@SPECIFICATION", row.Cells[1].ToString());
            cmd.Parameters.AddWithValue("@[1]", row.Cells[2].ToString());
            cmd.Parameters.AddWithValue("@[2]", row.Cells[3].ToString());
            cmd.Parameters.AddWithValue("@[3]", row.Cells[4].ToString());
            cmd.Parameters.AddWithValue("@[4]", row.Cells[5].ToString());
            cmd.Parameters.AddWithValue("@[5]", row.Cells[6].ToString());
            cmd.Parameters.AddWithValue("@TMLCAL",row.Cells[7].ToString());
         con.Open(); //here i am having an respected error
         cmd.ExecuteNonQuery();
         con.Close();
         Page.Response.Redirect(Page.Request.Url.ToString(), true);
        }

    }
}

我的错误是“对象引用未设置为对象的实例”。 帮我解决这个问题

2 个答案:

答案 0 :(得分:0)

用Convert.ToString替换.ToString(),如下所示。它将处理空白以及空值。然后,您可以检查为什么值变为空。您还需要添加.Text,如下所示。

cmd.Parameters.AddWithValue("@CRITICAL", Convert.ToString(row.Cells[0].Text));
cmd.Parameters.AddWithValue("@SPECIFICATION", Convert.ToString(row.Cells[1].Text));

答案 1 :(得分:0)

在调用.ToString()之前,请确保您的对象不为null,此外,要读取单元格文本,您还必须放置.Text 像这样:

    if (row.Cells[0] != null && !string.IsNullOrEmpty(row.Cells[0].Text)) {
     cmd.Parameters.AddWithValue("@CRITICAL", row.Cells[0].Text.ToString());

    } else {
     // Handle it
    }