2014-12-01 5 views
-2

열이 DateTime 유형 인 MySql 데이터베이스를 읽고 있습니다. 이 날짜 중 일부는 null입니다. 값이 null인지 아닌지 확인하는 방법을 알아낼 수 없습니다. 나는 IsDbNull이 문제를 해결할 것이라고 생각하지만, 모든IsDBNull이 예외를 throw합니다

if (!reader.IsDBNull(4)) 
{ 
    service.ServiceDate = reader.GetDateTime("serviceDate"); 
} 

이 내가지고있어 예외의 차이도하지 않습니다 :

"추가 정보 : MySQL의 날짜를 변환 할 수 없습니다/시간 System.DateTime "

가치는 또한

if (System.DBNull.Value == reader.IsDBNull(4)) 
시도

뿐만 아니라

reader.IsDBNull(4).ToString() 

내가 시도 캐치를 사용하지 않고 그것을 확인하려면 어떻게
Convert.ToBoolean(reader.IsDBNull(4)) 

?

+0

독자 유형은 무엇입니까? – faester

+0

읽고 계신 datetime 값은 무엇입니까? System.DateTime 범위를 벗어날 수 있습니다. – Blorgbeard

+0

'IsDBNull'는 그 오류를 던지지 않습니다. 그러나'GetDateTime'은 열의 인덱스 인 매개 변수로'int'를 받아들이기 때문에'reader.GetDateTime ("serviceDate")'는 컴파일러 오류를 야기합니다. 실제 코드를 보여주십시오. –

답변

3

오류가 IsDBNull과 아무런 관련이없는 것 같습니다. 구체적으로는 DateTime 변환을 언급합니다. IsDbNull과 마찬가지로 열 인덱스를 GetDateTime으로 전달하려고 시도 했습니까?

if (!reader.IsDBNull(4)) 
{ 
    service.ServiceDate = reader.GetDateTime(4); 
} 

.

또 다른 가능성 : 당신이 DATETIME 열에 0000-00-00 00:00:00 값으로 변환 할 수 있습니다 연결 문자열에 Convert Zero Datetime=true을 추가해야 할 수 있습니다처럼 Convert Zero Datetime=true

또한, 오류에 대한 다른 정보를 읽은 후, 그것은 소리 (있는 경우 그 중 하나) DateTime.MinValue합니다.

일부 결과는 여기에서 확인하십시오 : http://www.bing.com/search?q=Unable+to+convert+MySQL+date%2Ftime+value+to+System.DateTime&form=IE10TR&src=IE10TR&pc=HPDTDFJS

+0

감사합니다! AllowZeroDateTime 설정으로 해결했습니다! – haosmark

관련 문제