Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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/4/json/13.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# SQL Server数据库中未更新数据集更改_C#_Sql Server_Dataset - Fatal编程技术网

C# SQL Server数据库中未更新数据集更改

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

我已经通过设计器创建了一个数据集,并且能够很好地检索数据。在对其他数据进行一些更新之后,我需要更改原始行中的状态。我已经搜索了StackOverflow和MSDN,我想我已经尝试了所有建议-没有运气

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语句将更改数据库。(尽管我不确定如何验证这些是什么…)