2009-10-02 4 views
2

저는 C# 2005와 Sql Server 2000을 사용하는 응용 프로그램을 작성하고 있습니다.어떤 데이터 집합 행이 DB 고유 제약 조건을 위반합니까?

고유 한 제약 조건이있는 테이블이 있는데, 관련이있는 경우 두 명의 사용자가 Save is pressed) 테이블을 업데이트하십시오.

테이블이 NAMES (ID int, NAME varchar (20))이고 고유 제한 조건이 NAME에있는 경우, 저장하려는 첫 번째 사용자가 NAME 'David'및 'John'을 추가하면 괜찮습니다. 두 번째 사용자가 NAME 'John'및 'Susan'이있는 행을 포함하는 DataTable을 사용하여 업데이트하려고하면 SqlException이 발생합니다. 그러나 내 DataTable에서 제약 조건을 위반 한 행을 알려주는 예외는 없습니다.

DB에서 고유 한 제약 조건의 구성에 대한 세부 정보를 얻은 다음이 정보를 사용하여 DataTable의 각 행을 검사하여 해당 행이 제약 조건을 위반하는지 확인하는 방법은 어떤 행이 잘못되었는지 확인하는 방법입니까? 또한

답변

1

, DataTable에의 행 서로 단순히 충돌, 따라서 데이터베이스 작업이 실패 가능성에도 불구하고 DataTable을 사용하여 데이터베이스 충돌에 최선을 다하고 아무것도.

2

오류가있는 DataRow 배열을 가져 오려면 DataTable.GetErrors을 사용해야합니다.

배열의 각 DataRow에 대해 DataRow.RowError과 어떤 열에 DataRow.GetColumnsInError이 있는지 확인해야합니다.

+0

DataTable.GetErrors.Length가 0이므로 불행히도 도움이되지 않습니다. – dmlinliverpool

+0

은 내가 (말) nullable이 아닌 열에서 널을했다 DataTable의에 행을 추가 더라면 DataTable.GetErrors에 오류가있을 기대하지만 DataTable을에있는 행은 유효한 행입니다. DB에 이미있는 행과 충돌하는 경우가 있습니다. – dmlinliverpool

+0

DataTable에서 데이터베이스로 데이터를 가져 오기 위해 사용하고있는 것은 무엇입니까? DataAdapter? –