2017-04-14 5 views
2

나는 꽤 직설적이라고 생각하는 것을하려고하지만 문제가 있습니다. .NET 응용 프로그램에서 SQLCommand를 사용하여 테이블에 새 레코드를 삽입하는 코드가 있습니다.SQLParameter에서 잠재적으로 null datetime 값 처리

나는 datetime 값이거나 null 일 수있는 것을 전달하고 있습니다. 아래의 코드는 작동하지 않습니다.

command.Parameters.AddWithValue("@SettleDate", 
IIf(String.IsNullOrEmpty(SettleDate), Nothing, DateTime.Parse(SettleDate))) 

여기서 "SettleDate"는 null 일 수있는 날짜가 포함 된 문자열입니다.

String reference not set to an instance of a String. 
Parameter name: s 

것은이 방법이 될 수있다 :이 코드가 나는 Datetime.Parse 방법에서 보낸 것으로 보이는 다음과 같은 오류가 실행되어 그러나 때, null 값을 구문 분석을 시도하지 않는 조건을 포함 거라 봅니다 ? "SettleDate"가 null의 경우는 파싱 메서드에 도달해서는 안됩니다.

답변

0

당신은 최초의 하나에 해당하는 경우

If(String.IsNullOrEmpty(SettleDate), DBNull.Value, DateTime.Parse(SettleDate))) 

The IF operator은 IIF 함수에 반대는 식의 양쪽을 평가하려고하지 않습니다 함께 DbNull.Value과 VB.NET의 단락 opertator를 사용해야합니다 . 또한 null 값을 SqlParameter에 전달하려면 DbNull.Value을 사용합니다.

+0

아, 그건 내가 깨닫지 못한 아주 미묘한 것입니다. 감사. – DeveryDay