2012-07-29 49 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

相關問題