C# SQL Server数据库中未更新数据集更改
我已经通过设计器创建了一个数据集,并且能够很好地检索数据。在对其他数据进行一些更新之后,我需要更改原始行中的状态。我已经搜索了StackOverflow和MSDN,我想我已经尝试了所有建议-没有运气C# SQL Server数据库中未更新数据集更改,c#,sql-server,dataset,C#,Sql Server,Dataset,我已经通过设计器创建了一个数据集,并且能够很好地检索数据。在对其他数据进行一些更新之后,我需要更改原始行中的状态。我已经搜索了StackOverflow和MSDN,我想我已经尝试了所有建议-没有运气 AFEDataSetTableAdapters.AFE_allTableAdapter taAFEAll = new AFEDataSetTableAdapters.AFE_allTableAdapter(); AFEDataSet.AFE_allDataTable dtAFEAll = new A
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显示了Afestus的更改值。但是,更新返回一个零,并且数据库不会更改
我在DataSetDesigner后面的代码中进行了验证,AFE_all表定义了一个Update语句
我哪里出错了?或者,我还缺少哪一个步骤?您需要删除这一行
drAFE.AcceptChanges();
AcceptChanges()方法将数据行的状态“更改”为“未更改”,因此当调用更新时,没有要保存的行
在数据集上调用AcceptChanges时,任何DataRow对象都会
在编辑模式下,成功结束编辑。的RowState属性
每个数据行也会发生变化;添加和修改的行将保持不变,
删除的行将被删除
“我尝试过使用和不使用…AcceptChanges”-抱歉,不是这样。EndEdit()调用后属性drAFE.RowState的值是多少?它应该是
Modified
Steve-在执行drAFE.EndEdit
之后,它确实显示为Modified。这很奇怪,除非您设置的值已经是列的值。肯定是一个更改的值(从“Approved”到“Published”);我还更改了一个日期列,这在上面的代码段中没有显示。两列都显示(在调试视图中)发生的更改,然后“已修改”显示在行状态中。。。然后,什么也没有。没有错误,没有更改。忘记提及-我已经确认,使用定义数据集时提供的凭据,direct SQL update语句将更改数据库。(尽管我不确定如何验证这些是什么…)