2012-07-29 77 views
-1

我有一个WinForms应用程序,即使用从IDE数据库的更改不会推送到服务器

此数据源和数据集控制的代码块,我使用

 dsParcelBatch.BC_cpo_PARCELRow pr = dsParcelBatch.BC_cpo_PARCEL.FindByISN(int.Parse(activeParcelID)); 
    pr.BeginEdit(); 
    pr.NODE_ISN = 6; 
    pr.EndEdit();  
    pr.AcceptChanges(); 

    dsParcelBatch.AcceptChanges(); 

我可以读正确的行在第1行,并且它正在用正确的值填充PR行, 我称为beginedit,并且dsParcelBatch尚未更新。

我改变NODE_ISN为新值的值,它坚持

我关闭编辑,并接受该行的变化。 我可以查看数据源(dsParcelBatch),并在其中进行更改 - YEA!

我所说的dsParcelBatch,更改的值被改变....

但是当我查看数据库,值回原始值(5)

我失去了什么东西?

+0

你好,你是否认为你的字段activeParcelID不是主键?尝试更改另一个字段并验证它在数据库上发生更改 – 2012-07-29 05:44:12

+0

activeParcelID是主键......但同样,值开始保存在内存中的数据集中,并且我可以查看它们,它们只是未写入数据库。 – pithhelmet 2012-07-31 15:21:59

回答

0

在调用AcceptChanges之前,您需要使用DataAdapterUpdate数据库。

AcceptChanges只更改DataTable中的行的状态,而不是数据库中的行的状态。

MSDN

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

+0

我在哪里可以将这个“dataadapter”放在上面的代码中?我有数据集和数据行,当我在IDE中检查它们时,它们都显示正确的值。感谢您的回复 – pithhelmet 2012-07-31 15:25:00

+0

就在AcceptChanges调用之前。看看我链接的例子。请注意,您将不得不使用正确版本的SqlDataAdapter或OleDBDataAdapter或... – 2012-07-31 17:43:42

+0

我会尽力而为 – pithhelmet 2012-07-31 18:35:06

相关问题