我已经通过设计器创建了一个数据集,并且我能够很好地检索数据。在对其他数据做一些更新之后,我需要更改原始行中的状态。我搜刮了StackOverflow和MSDN,我想我已经尝试了所有建议 - 没有运气。在SQL Server数据库中没有更新数据集更改
AFEDataSetTableAdapters.AFE_allTableAdapter taAFEAll = new AFEDataSetTableAdapters.AFE_allTableAdapter();
AFEDataSet.AFE_allDataTable dtAFEAll = new AFEDataSet.AFE_allDataTable();
taAFEAll.Fill(dtAFEAll, sAFENumber);
if (dtAFEAll.Count != 1)
{
// error condition - should only ever be one row
}
DataRow drAFE = dtAFEAll.Rows[0];
// ...如果一切顺利的话......
if (...successful...)
{
drAFE.BeginEdit();
drAFE["AFEStatus"] = "Published";
drAFE.EndEdit();
try
{
drAFE.AcceptChanges();
int iTemp = taAFEAll.Update(dsAFE.AFE_all);
}
catch (Exception ex)
{
sMessage = ex.Message.ToString();
}
}
我一直有和没有BeginEdit,EndEdit中,AcceptChanges的试了一下;不用找了。当调用.Update
方法时,我可以看到(在调试中)drAFE的ItemArray显示AFEStatus的更改值。然而,更新返回0,并且数据库不会更改。
我在DataSetDesigner后面的代码中进行了验证,并且AFE_all表中定义了一条Update语句。
我哪里错了?或者,我错过了什么更多的步骤?
忘了提 - 我已经证实,直接SQL更新语句会改变数据库,使用定义的数据集时,我提供的凭据。 (虽然我不确定如何验证这些是什么......) – 2013-04-24 21:24:31