关于从视图中更新到源表
例如,我有一个视图如下:CREATE VIEW dbo.ViewBom
AS
SELECT dbo.Bom.SampleID, dbo.Bom.PartID, dbo.ViewPart.PartName,
dbo.ViewPart.PartSpec, dbo.ViewPart.ColorName, dbo.ViewPart.UnitName,
dbo.Bom.Dosage,dbo.Bom.Dosage
FROM dbo.Bom LEFT OUTER JOIN
dbo.ViewPart ON
dbo.dbo.Bom.PartID = dbo.ViewPart.PartID
我现在将其数据绑定到DataGridView中,代码如下:
SqlConnection conn = new SqlConnection(strConnectionString);
string StrSql = "SELECT * FROM ViewBom ORDER BY PartID";
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
sda.Fill(dataSet, "ViewBom");
BindingSource bs = new BindingSource();
bs.DataSource = dataSet.Table["ViewBom"];
dgv.DataSource = bs;
(注:Bom和ViewPart是两个SQL源表,而ViewBom则是由Bom和ViewPart得到的一个视图)
我现在的问题是:
因为没有办法使其在对dgv进年编辑后,直接调用sda.Update()来更新Bom表中的数据,
所以我目前使用的方法是:在"保存"按钮的代码中,先用一个DELETE 语句删除数据库中的所有记录,
然后用foreach遍历dgv中的每一行,并生成INSERT 语名,以其来更新数据.
大家有无更好的方法?