Datatable.acceptchanges() 将数据提交到表中

发布于 2024-11-02 02:02:45 字数 67 浏览 1 评论 0原文

Datatable.acceptchanges 将数据提交到表...意味着

它将数据插入表..或数据表?

Datatable.acceptchanges commits data to the table...means

will it insert data to the table ..or datatable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

述情 2024-11-09 02:02:46

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

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

The purpose of AcceptChanges() is to let the DataTable know that its data has been saved to the database. All DataRows in the DataTable have their row.RowState set to DataRowState.Unchanged.

It does not save the data to the database. That is done separately.

把时间冻结 2024-11-09 02:02:46

这是文档

当调用 AcceptChanges 时,任何
DataRow 对象仍处于编辑模式
成功结束编辑。这
DataRowState 也发生变化:全部添加
并且修改的行变为未更改,
并删除已删除的行。

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

所以您的实际数据库不受影响。

Here's the documentation:

When AcceptChanges is called, any
DataRow object still in edit mode
successfully ends its edits. The
DataRowState also changes: all Added
and Modified rows become Unchanged,
and Deleted rows are removed.

The AcceptChanges method is generally
called on a DataTable after you
attempt to update the DataSet using
the DbDataAdapter.Update method.

So your actual database is unaffected.

丘比特射中我 2024-11-09 02:02:46

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

AcceptChanges 只是将这些更改保存到数据表中。

如果要提交更改,您需要使用数据适配器或使用其他方法从数据表中的数据行获取数据并提交更改。

Some people choose to manipulate the data in a datatable, examples are deleting certain rows or hanging all names to uppercase. removing NULL's and so on.

AcceptChanges just saves these changes to the datatable.

If you want to commit the changes you need to use a dataadaptor or use another method to get the data from the datarows in the datatable and commit the changes.

┾廆蒐ゝ 2024-11-09 02:02:46

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

Will only affect the datatable. Not any DB table.

真心难拥有 2024-11-09 02:02:46

就我而言,这是由数据库中的自动编号字段引起的,我建议如下
调用数据适配器的更新方法
呼叫更新
/// 用于自动编号列
调用datatable的acceptchanges

然后通过oledbadapter重新填表。如果您不需要自动编号字段,请勿将其添加为 oledbadapter 的删除命令中的参数

In my case it was caused by auto-number field in database, I suggest below
call update methof of data adapter
call update
/// for auto number column
call acceptchanges of datatable

Then re-fill table through oledbadapter. If u do not need to autonumber field, do not add that as a parameter in deletecommand of oledbadapter

旧伤还要旧人安 2024-11-09 02:02:46

好的 - 如果我有这个权利,显式调用 DT.CommitChanges() 会将所有行设置为 UNCHANGED。如果这是真的,则在调用 DA.UPDATE(DT) 时,对数据表所做的任何更改都将被忽略。

所以看来,您应该只为那些您不想到达数据库的更改调用 DT.CommitChanges() 。

因此,无论是否调用 CommitChanges,更改都会写入 .NET 数据表,但要获取对数据库表的更改,请不要在执行 DA.Update 之前调用 CommitChanges。当然,这意味着必须调用 DA.Update 才能将更改实际推送到数据库......

Okay - If I have this right, explicitly calling a DT.CommitChanges() will set all rows to UNCHANGED. And if that is true, when calling DA.UPDATE(DT), any changes you made to the datatable will be ignored.

So it seems, you should only call DT.CommitChanges() for those changes that you DO NOT want to reach the database.

Therefore, changes DO make it to the .NET datatable, regardless of the CommitChanges call, but to get changes to the database table, don't call a CommitChanges prior to performing the DA.Update. And of course implying that DA.Update must be called to actually pushed the changes to the database...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文