1.與DataAdapter對象相連接的DataSet對象使用樂觀鎖來處理記錄內容沖突
2.如果使用用戶存儲過程來替代表操作的話,並發問題的處理還需要一些額外的工作
3.Data Adapter配置向導能夠創建存儲過程來處理這個問題
4.當ContinueUpdateOnError為false(缺省值)時,在發生第一個沖突的時候會拋出DBConcurrencyException異常
5.捕獲該異常並且通知用戶,或者處理該異常或提示用戶下一步需要做出哪些選擇
1DataSet changes = myDataSet.GetChanges();
2
3try
4{
5 MySQLDataAdapter.Update(changes);
6 myDataSet.Merge(changes);
7}catch(DBConcurrencyException e)
8{
9 //通知用戶記錄從上次更新到現在已經發生過變化,放棄更新
10}
11finally
12更高級的操作模型:
1DataSet changes = myDataSet.GetChanges();
2
3try
4{
5 MySQLDataAdapter.ContinueOnError = true;
6 MySQLDataAdapter.Update(changes);
7 if(changes.HasErrors){
8 //獲取錯誤
9 DataRow[] collisions = changes.Tables[0].GetErrors();
10 //處理錯誤
11}