Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#从datagridview更新/插入_C#_.net_Winforms_Datagridview - Fatal编程技术网

c#从datagridview更新/插入

c#从datagridview更新/插入,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,每当执行代码时,它总是返回未提供会导致错误的ID值。有人能告诉我我的错误在哪里吗?在一些查询中,还有sqlcommand.Parameters.Clear()未包含在此代码中 @ID应该指向datagridview中的第一列,在这里我还可以通过SQL管理设置与表中ID(主键)的匹配 using (SqlCommand InsUpd = new SqlCommand( @"IF EXISTS(SELECT 1 FROM dbo.Bokfuppg WHERE dbo.Bokf

每当执行代码时,它总是返回未提供会导致错误的ID值。有人能告诉我我的错误在哪里吗?在一些查询中,还有
sqlcommand.Parameters.Clear()未包含在此代码中

@ID应该指向
datagridview
中的第一列,在这里我还可以通过SQL管理设置与表中ID(主键)的匹配

using (SqlCommand InsUpd = new SqlCommand(
            @"IF EXISTS(SELECT 1 FROM dbo.Bokfuppg WHERE dbo.Bokfuppg.ID = @ID)
            UPDATE dbo.bokfuppg
            SET fnr = @Fnr, kto = @Kto, Ukto = @Ukto, avd = @Avd, prod = @Prod, proj = @Proj, ant = @Ant, bel = @Bel, Text = @Text, vbel = @Vbel, period = @Period
            WHERE dbo.Bokfuppg.ID = @ID
            ELSE
            INSERT INTO dbo.bokfuppg(Fnr, Kto, Ukto, Avd, Prod, Proj, ant, bel, text, vbel, period) VALUES(@Fnr, @Kto, @Ukto, @Avd, @Prod, @Proj, @Ant, @Bel, @Text, @Vbel, @Period)", con))

        {
            con.Open();
            using (SqlTransaction tr = con.BeginTransaction())
            {
                InsUpd.Transaction = tr;

                InsUpd.Parameters.Add("@ID", SqlDbType.Int);
                InsUpd.Parameters.Add("@Fnr", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Kto", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Ukto", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Avd", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Prod", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Proj", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Ant", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Bel", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Text", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Vbel", SqlDbType.NVarChar);
                InsUpd.Parameters.Add("@Period", SqlDbType.NVarChar);
                foreach (DataGridViewRow item in dataGridViewBokfuppg.Rows)
                {

                    InsUpd.Parameters["@ID"].Value = item.Cells[0].Value;
                    InsUpd.Parameters["@Fnr"].Value = textBox1.Text;
                    InsUpd.Parameters["@Kto"].Value = item.Cells[1].Value;
                    InsUpd.Parameters["@Ukto"].Value = item.Cells[2].Value;
                    InsUpd.Parameters["@Avd"].Value = item.Cells[3].Value;
                    InsUpd.Parameters["@Prod"].Value = item.Cells[4].Value;
                    InsUpd.Parameters["@Proj"].Value = item.Cells[5].Value;
                    InsUpd.Parameters["@Ant"].Value = item.Cells[6].Value;
                    InsUpd.Parameters["@Bel"].Value = item.Cells[7].Value;
                    InsUpd.Parameters["@Text"].Value = item.Cells[8].Value;
                    InsUpd.Parameters["@Vbel"].Value = item.Cells[9].Value;
                    InsUpd.Parameters["@Period"].Value = item.Cells[10].Value;
                    InsUpd.ExecuteNonQuery();
                }
                tr.Commit();
            }
        }
        MessageBox.Show("Record Updated Successfully");`

将它转换为存储过程并尝试使用它,但是出于这个特定的目的,我找到了另一个可以使用的模型,但是您的建议让我阅读了更多关于存储过程的内容,这在将来肯定会变得很有价值。