2011-09-28 4 views
0

텍스트 필드를 날짜 시간으로 변환하고 db로 삽입합니다. 텍스트 필드가 null의 경우에는,"문자열이 유효한 DateTime으로 인식되지 않았습니다"문제를 해결하는 방법?

문자열이 유효한 날짜 시간

이 인정되지 않았 음을 예외 내가 무슨 짓을 던졌습니다 :

nvpt4Entities db = new nvpt4Entities(); 

    ClassInfo order = new ClassInfo 
    { 
     ClassID = classID.Text, 
     ClassName = className.SelectedItem.Text, 
     ClassTime = classTime1.Text, 
     ClassDate = DateTime.ParseExact(classDate1.Text, "MM/dd/yyyy", null), 
     ClassDay = classDay.SelectedValue, 
     ClassMonth = classMonth.SelectedValue, 
     ClassLocation = classLocation.SelectedItem.Text, 
     ClassNotes= classNotes.Text, 
     ClassInstructor = classInstructor.SelectedValue, 
     ClassInstructor1 = classInstructor2.SelectedValue, 
     ClassInstructor2 = classInstructor3.SelectedValue, 
     MultiDate2 = DateTime.ParseExact(multidate2.Text, "MM/dd/yyyy", null), 
     MultiDate3 = DateTime.ParseExact(multidate3.Text, "MM/dd/yyyy", null), 
     MultiDate4 = DateTime.ParseExact(multidate4.Text, "MM/dd/yyyy", null), 
     MultiDate5 = DateTime.ParseExact(multidate5.Text, "MM/dd/yyyy", null), 
     ClassStrength = Convert.ToInt16(classStrength.Text), 
     ClassProvider = classProvider.SelectedItem.Text, 
     LocationID = Convert.ToInt16(classLocation.SelectedValue), 
     ClassCID = Convert.ToInt16(className.SelectedValue), 
     ProviderID = Convert.ToInt16(classProvider.SelectedValue) 

    }; 

을 그래서, db에 삽입하는 동안 null 문자열을 datetime으로 변환하는 방법을 알고 싶습니다.

+1

null 문자열을 어떻게 변환 하시겠습니까? 이러한 nullable 'DateTime' 열입니까? – Jacob

+0

아니요 null 가능 날짜 시간 열이 아닙니다 – user838359

+2

그럼 null 문자열을 어떻게 변환해야합니까? – Jacob

답변

2

필드에 nullable DateTime을 사용할 수있는 경우 :

ClassDate = string.IsNullOrEmpty(classDate1.Text) ? (DateTime?)null : 
       DateTime.ParseExact(classDate1.Text, "MM/dd/yyyy", null), 
+0

이제 NULL과 datetime – user838359

+0

+1 사이의 암시 적 변환을 말하는 오류가 발생하지만, 이것을 수행하면 컴파일러 오류가 발생합니다. 'null'을'(DateTime?) null'로 대체하십시오. – Jacob

+0

@ Jacob : 죄송합니다! –

3

이것은 데이터베이스와는 아무것도이 없습니다. 오류 메시지 W 예외가 _ 생한 위치에주의하십시오.

DateTime.ParseExact(__, "MM/dd/yyyy", null) 

은 "빈/유효하지 않은 문자열"사건을 처리하는 적절한 방법의 호출이 교체, 또는 사용 검증이 단계를 적절한 보장하는 것입니다 그러나, 상기 오류가 어디에서 오는지 관련성있는 유일한 방법입니다 결코 도달하지 않는다; DateTime?은 널 (NULL) 입력 가능 컬럼에 사용되어야하며, 그렇지 않으면 센티널을 사용할 수 있습니다. (해당 방법의 내용이 무엇인지에 대한 마크 바이어스의 대답을 참조하십시오.)

해피 코딩.

관련 문제