c#从datagridview更新/插入
每当执行代码时,它总是返回未提供会导致错误的ID值。有人能告诉我我的错误在哪里吗?在一些查询中,还有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
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");`
将它转换为存储过程并尝试使用它,但是出于这个特定的目的,我找到了另一个可以使用的模型,但是您的建议让我阅读了更多关于存储过程的内容,这在将来肯定会变得很有价值。