摘要: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
相關參考: