2012-03-29 9 views
2

C# .NET을 처음 사용합니다. 나는 2 일 이래로 노력했지만 성공할 수 없었다.
Windows 응용 프로그램을 만들었습니다. 이메일, 전화라는 두 개의 고유 한 열이있는 테이블이 있습니다.
레코드 삽입시 고유 키 제약 조건 예외를 발생시키는 열 이름을 찾고 싶습니다. 나는 시도했다,
var ex = new SqlException();
ex.Data["Mesg"] = "Exception in Email";
throw ex;

하지만 "System.Data.SqlClient.SqlException '에 정의 된 생성자가 없습니다."
가능합니까? 도와주세요.테이블에 고유 키 열이 두 개 이상있는 경우 고유 열 제약 조건 예외를 throw하는 열을 찾는 방법은 무엇입니까?

+0

내 조언이 들어오는 모델의 유효성을 확인하는 것, 및 오류를 다시 던지는 데이터베이스에 의존하지 않는 : 그래서 다음과 같은 구문을 사용합니다. 그런 다음 연결하기 전에 먼저 알기 때문에 DB에 시간을 낭비하지 않아도됩니다. 이제 당신은 단순한'ArgumentException'을 선행 적으로 던질 수 있고, 단지 검증을했기 때문에 문제가 무엇인지를 정확히 알 수 있습니다. – asawyer

+0

삽입/업데이트하려는 데이터가 * multiple * 제약 조건을 위반할 수 있으며 그 중 하나에 대한 위반 정보 (어느 것이 불확정 한 것인지) 만 알 수 있습니다. –

+0

감사합니다 @ asawyer, @ Damien_The_Unbeliever. –

답변

2

이 정보는 얻고 싶지 않으므로 생산하지 않으려합니다.

try 
{ 
    ... (access the database here) ... 
} 
catch (SqlException e) 
{ 
    ... (look at e.Message) 
}