DataSet與並行違規

在VS2005中資料處理常常會用到DataSet,而DataSet的特性是會把資料從資料來源中取出之後放到Client端的記憶體中;而在資料處理完成之後要Update回資料庫,這時候如果資料來源中的資料跟當初我們撈出來的資料是不相符合的,也就是可能被其他使用者變更過了,這時候就會出現"並行違規"的錯誤訊息,那我們應該怎麼去處理這個錯誤呢?
下面介紹的是比較簡單的方式,會利用DataSet的Merge再一次的將資料合併,並且把變更Update回資料庫,感覺就是"後面的變更會蓋掉前面的",程式碼如下
Try
Me.xxxTableAdapter.Update(Me.xxxDataSet.xxxDataTable)
Me.xxxDataSet.xxxTable.AcceptChanges()
MessageBox.Show("資料儲存成功")
Catch dbex As Data.DBConcurrencyException
If MessageBox.Show("資料可能經由其他使用者變更過,仍要更新嗎?", "更新錯誤", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
Try
Using TempDS As New xxxDataSet.xxxDataTable
Me.xxxTableAdapter.Fill(TempDS)
Me.xxxDataSet.xxxDataTable.Merge(TempDS, True)
Me.xxxTableAdapter.Update(Me.xxxDataSet.xxxDataTable)
Me.xxxDataSet.xxxDataTable.AcceptChanges()
End Using
Catch ex As Exception
MessageBox.Show(ex.Message.ToString, "儲存失敗")
End Try
End If
Catch ex As Exception
MessageBox.Show(ex.Message.ToString, "儲存錯誤")
End Try

相關參考:

留言

這個網誌中的熱門文章

開啟cshtml檔案時,出現『並未將物件參考設定為物件執行個體』的錯誤訊息

無法設定中斷點 尚未載入符號檔

DataGridView欄位計算總合