2011-08-15 3 views
0

이의 당신이 SqlDataAdapter를의 update 메소드 호출한다고 가정 해 봅시다 오류 상태 지우려면 :ADO.NET SqlDataAdapter를 어떻게

 MyDataSet.Tables[0].DefaultView.RowStateFilter = DataViewRowState.ModifiedCurrent; 
     if (MyDataSet.Tables[0].DefaultView.Count > 0) 
     { 
      MySqlAdapter.Update(DS.Tables[0].DefaultView.Table); 
     } 

을하고 사용자가 필요한 열 NULL을 떠난하는 일, 그래서 백 엔드에 대한 불만 그리고 catch 블록이 "null 일 수 없음"SQL 예외를 트랩합니다. 사용자가 필요한 값을 제공 할 때도 ADO.NET이 동일한 오류를 반복해서 발생시키지 않도록 오류 상태를 어떻게 지우시겠습니까? 누락 된 값이 제공되는 한, 갱신이 발생할 수있는 상태로 어댑터를 되돌리려면 어떤 오브젝트의 메소드를 호출해야하거나 어떤 특성을 변경해야합니까?

이 충분하지 않는 것 :

 internal void OnRowUpdating(object sender, System.Data.SqlClient.SqlRowUpdatingEventArgs e) 
    { 
     if (e.Status == UpdateStatus.ErrorsOccurred) 
     { 
      e.Row.RowError = e.Errors.Message; 
      e.Status = UpdateStatus.SkipCurrentRow; 
     } 

    } 

답변

0

사용자가 원하는 값으로 채우는 경우 "null 일 수 없습니다"예외가 멀리 갈 것입니다. 그것은 쉽지만, 다시 나는 이렇게 저장합니다 :

DataTable changes=MyDataSet.Tables[0].GetChanges(); 
if (changes!=null) 
{ 
    MySqlAdapter.Update(changes); 
    MyDataSet.Tables[0].AcceptChanges(); 
} 
+0

나는 GetChanges 방법을 고려할 것입니다. 하지만 어떻게/어디서 오류를 처리하고 있습니까? – Tim

+0

"null 일 수 없음"예외는 MySqlAdapter.Update()에서 발생합니다. 거기에 예외를 잡아 다음 사용자가 null이 아닌 값을 변경하고 다음이 코드를 다시 저장 단추 누르거나 뭔가를 실행하도록 허용해야합니다. – beater

관련 문제