Visual Studio C#数据网格视图到数据库

本文关键字:视图 数据库 网格 数据网 Studio 数据 Visual | 更新日期: 2023-09-27 18:05:57

我正试图将datagridview中的数据保存到数据库。我一直在拿

NullReferenceException:对象引用未设置为对象的实例


try 
{           
    foreach (DataGridViewRow row in dataGridView2.Rows)
    {            
        using ( conn = new SqlConnection(constring))
        {
            using (SqlCommand cmd = new SqlCommand("INSERT INTO tbl_Students_Marks VALUES(@Student, @T1, @T2, @T3, @T4)", conn))
            {
                cmd.Parameters.AddWithValue("@Student", (row.Cells["Student Number"].Value).ToString());
                cmd.Parameters.AddWithValue("@T1", row.Cells["Test 1"].Value);
                cmd.Parameters.AddWithValue("@T2", row.Cells["Test 2"].Value);
                cmd.Parameters.AddWithValue("@T3", row.Cells["Test 3"].Value);
                cmd.Parameters.AddWithValue("@T4", row.Cells["Test 4"].Value);
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();

Visual Studio C#数据网格视图到数据库

看起来您的行值为空。

尝试用以下代码替换您的第9行:

            var studentNumber = row.Cells["Student Number"].Value
            if (studentNumber == null || studentNumber is DBNull)
              continue;
            cmd.Parameters.AddWithValue("@Student", studentNumber.ToString());

hmmm尝试此代码

try 
{           
foreach (DataGridViewRow row in dataGridView2.Rows)
{            
    using ( conn = new SqlConnection(constring))
    {
        using (SqlCommand cmd = new SqlCommand(constring))
        {
            cmd.Connection = con;
            cmd.CommandText = "INSERT INTO tbl_Students_Marks VALUES(@Student, @T1, @T2, @T3, @T4)";
            cmd.CommandType = CommandType.Text
            cmd.Parameters.AddWithValue("@Student", (row.Cells["Student Number"].Value).ToString());
            cmd.Parameters.AddWithValue("@T1", row.Cells["Test 1"].Value);
            cmd.Parameters.AddWithValue("@T2", row.Cells["Test 2"].Value);
            cmd.Parameters.AddWithValue("@T3", row.Cells["Test 3"].Value);
            cmd.Parameters.AddWithValue("@T4", row.Cells["Test 4"].Value);
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();

我希望它能帮助你

您应该先从DataGridView的底部删除空行。这就是为什么不能插入最后一行。如下(在DataGridView Properties中将AllowUserToAddRows设置为False,或在填充DataGridView方法中添加dataGridView2.AllowUserToAddRows = false;(:

dataGridView2.DataSource = ds.Tables[0];
dataGridView2.AllowUserToAddRows = false;

然后将代码的其余部分转换为INSERT