2011-05-12 97 views
0

現狀:WPF應用程序,.NET4,與設計師創建數據源(MS SQL Server 2008中)不能DataSet中保存回數據庫

問題:讀取數據運行良好:

adapter.Fill(ds); 

的DataSet中填充數據,綁定到DataGrids的表。當我然後編輯任何DataGrid(例如添加一行)並在WPF的DataGrid中按下「Enter」時,新行將被成功添加。

然後我打電話:

ds.AcceptChanges(); 
adapter.Update(ds); 

沒有變化就是底層的MS SQL Server 2008數據庫製作。這是瘋了,有人知道問題在哪裏嗎?

+1

你在表格中創建了PRIMARY KEY嗎? – jams 2011-05-12 12:27:53

+0

在數據庫中它是自動增量,所以沒有我沒有。有關係嗎? – Cartesius00 2011-05-12 13:44:09

回答

3

你應該在更新後調用acceptchanges,或者實際上根本沒有。

http://msdn.microsoft.com/en-us/library/system.data.dataset.acceptchanges.aspx

AcceptChanges的標記在數據集作爲不變的所有行,所以更新認爲沒有改變,也不會更新數據庫。

+1

爲什麼?更新應該更新SQL數據庫,不應該嗎?更新是無聲的,沒有任何反應。 – Cartesius00 2011-05-12 13:46:14

+0

對不起。意外地提出了答覆,並且無法解決這個問題。更新將所有數據傳回到數據集中**被標記爲已修改**的數據庫。 AcceptChanges將所有數據標記爲未修改。 AcceptChanges()後沒有更多的數據標記,因此沒有更新 – k3b 2011-05-12 16:00:58

0

您是否指定了更新並在數據適配器中插入了sql語句/存儲過程?

另一個需要注意的是dataAdapter(int)的返回值,它是成功更新的行數。這是否帶有價值?

你可以發佈你的數據適配器初始化代碼嗎?

0

這仍然沒有解決,我有同樣的問題。
在tableadapter上,您可以執行tableadaptername.Update(dataset.NameofDataset)。
但是,這不會寫入數據庫。
命名的DataSet只知道AcceptChanges,但不知道Dot操作符後的更新。

所以,這是未解四年......還有其他的帖子這個樣子,太...
只是不回答這個問題,如果它不作任何區別 - 這裏的AcceptChanges是不相關的。
真誠,
安迪

0

我發現了同樣的使用形式使用時,一個DataGrid是真(下Server 2012的操作系統不同的機器上使用VS 2013 Express,用於Windows桌面的Windows窗體應用程序)。
我加了一個按鈕,該按鈕的單擊事件調用更新方法:

this.customersTableAdapter.Update(this.database1DataSet); 
MessageBox.Show("Save was done."); 

我加在MessageBox只看到某事物發生了,因爲我不再相信這個IDE。
數據網格中所做的更改反映在表單中。沒有來自VS或Windows的投訴。我再次運行它:數據未保存到數據庫。
它只是一個錯誤的東西,不值得所有的關注。
可能是所有的設計。
Sooo long,
Andi