2014-05-08 5 views
-4

SQL Server 데이터베이스에 행을 삽입하는 C# 데스크톱 응용 프로그램이 있습니다. 릴리스 모드에서 빌드하면 행이 데이터베이스에 나타나지 않는 것으로 나타났습니다. 하지만 디버그 모드로 빌드하면 정상적으로 작동합니다. 무엇이 이것을 일으킬 수 있습니까?릴리스 모드에서 SQL Server 삽입이 작동하지 않습니다.

+0

아직 릴리스 모드 빌드를 디버깅 할 수 있습니다. 아시다시피 조사해 보셨습니까? – Blorgbeard

+0

애플리케이션에 로깅이 있습니까? –

+0

릴리스 및 디버그 구성이 다릅니 까? (어쩌면 릴리스가 다른 데이터베이스를 가리키고 있으므로 잘못된 DB를보고있는 것입니다) – NSjonas

답변

1

감사합니다. 출시 모드에서 디버깅 할 수 있음을 지적 해 주신 Blorgbeard에게 감사드립니다. 릴리스 모드로 전환하고 중단 점을 설정하려고 시도했을 때 삽입을 실행하는 코드가 Visual Studio에서 "회색으로 표시"되었음을 알았습니다! 코드는 다음과 같습니다.

Debug.Assert(cmd.ExecuteNonQuery() == 1) 

분명히 Debug.Assert는 릴리스 모드에서 건너 뜁니다.

나는 그것을 변경하여 고정 :

var nRows = cmd.ExecuteNonQuery(); 
Debug.Assert(nRows == 1) 

편집 : 지금 릴리스 모드에서 작동하지만, 그것은 단지 반환 코드를 검사하기 때문에

위의 솔루션은 적합하지 않습니다 디버그 모드. 더 나은 버전은 다음과 같습니다.

if (cmd.ExecuteNonQuery() != 1) 
    throw new ApplicationException("sql statement failed"); 
관련 문제