Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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# acceptchanges()将数据提交到表中_C#_.net_Asp.net_Database_Datatable - Fatal编程技术网

C# acceptchanges()将数据提交到表中

C# acceptchanges()将数据提交到表中,c#,.net,asp.net,database,datatable,C#,.net,Asp.net,Database,Datatable,Datatable.acceptchanges将数据提交到表…表示 它会将数据插入表..还是数据表?以下是: 调用AcceptChanges时,任何 DataRow对象仍处于编辑模式 成功结束其编辑。这个 DataRowState也会更改:所有已添加 修改后的行将保持不变, 删除的行将被删除 AcceptChanges方法通常是 在您之后调用数据表 尝试使用更新数据集 DbDataAdapter.Update方法 因此您的实际数据库不会受到影响。只会影响datatable。不是任何数据库表。Ac

Datatable.acceptchanges将数据提交到表…表示

它会将数据插入表..还是数据表?

以下是:

调用AcceptChanges时,任何 DataRow对象仍处于编辑模式 成功结束其编辑。这个 DataRowState也会更改:所有已添加 修改后的行将保持不变, 删除的行将被删除

AcceptChanges方法通常是 在您之后调用数据表 尝试使用更新数据集 DbDataAdapter.Update方法


因此您的实际数据库不会受到影响。

只会影响datatable。不是任何数据库表。

AcceptChanges()的目的是让DataTable知道其数据已保存到数据库中。DataTable中的所有DataRows都将其row.RowState设置为DataRowState.Unchanged


它不会将数据保存到数据库中。这是单独完成的。

有些人选择操作数据表中的数据,例如删除某些行或将所有名称挂起为大写。删除
NULL
,等等

AcceptChanges
仅将这些更改保存到数据表中


如果要提交更改,需要使用DataAdapter或使用其他方法从datatable中的datarows获取数据并提交更改。

在我的情况下,这是由数据库中的自动编号字段引起的,我建议如下 数据适配器的调用更新方法 呼叫更新 ///用于自动编号列 调用数据表的更改


然后通过oledbadapter重新填写表格。如果不需要自动编号字段,请不要将其作为参数添加到oledbadapter的deletecommand中

好的-如果我有此权限,显式调用DT.CommitChanges()会将所有行设置为未更改。如果这是真的,那么在调用DA.UPDATE(DT)时,您对datatable所做的任何更改都将被忽略

因此,对于不希望到达数据库的更改,您应该只调用DT.CommitChanges()


因此,无论CommitChanges调用如何,更改都会对.NET datatable进行更改,但要对数据库表进行更改,在执行DA.Update之前不要调用CommitChanges。当然,这意味着必须调用DA.Update才能将更改实际推送到数据库…

DataTable。不是数据库中的表。这仍然有点混乱。。。如果我添加一行,并通过调用DT.ACCEPTCHANGES将其标记为ADDED,则该行的状态将保持不变。。。我想,如果在这样做之后,我做了一个DATAADAPTER.UPDATE(DT),调用是否查看了现在未更改的状态,而不尝试对数据库进行更改,那么就会产生混淆?或者更新会将DATATABLE中的行与数据库中的行进行比较,而不管DT rowstate是什么?好的,如果我读对了,看起来像是在DA.UPDATE(DT)之前调用DT.ACCEPTCHANGES的代码,会阻止dataadapter这样做。也就是说,如果您在datatable中添加/删除/更新一行,执行ACCEPTCHANGES,然后执行DA.UPDATE(DT),则更新方法不会处理该行,因为对它来说,“行”是不变的。因此,实际上,调用它从本质上防止了更改到达DB?DataAdapter通常管理DataRow.RowState属性。它使用DataRow.RowState来确定对该行采取什么操作。如果给定行的RowState是DataRowState.Unchanged,则不会对该行执行任何操作。我的看法不同。您声明:“
AcceptChanges
只是将这些更改保存到数据表中。”但这些更改实际上已经保存到数据表中。AcceptChanges将当前更改标记为不再是真正的更改。仅此而已。但我认为当我们在DataAdapteOpr上调用Update方法时,AcceptChanges会自动调用吗?我们需要打电话给Acceptly吗?