2010-05-19 7 views
1

데이터베이스 유형 중 하나의 컬럼에 널 (null) 값이 있습니다. 내가 내 응용 프로그램에서 데이터를 얻을 수있는 sored 프로 시저를 실행하고널 (NULL) 컬럼의. 제점

wipDBTableAdapters.XLSFacturiTableAdapter TAFacturi = new wipDBTableAdapters.XLSFacturiTableAdapter(); 
       var dtfacturi = TAFacturi.GetData(CodProiect); 

그럼 이렇게 뭔가를 시도 :

The result of the expression is always 'false' since a value of type 'double' is never equal to 'null' of type 'double? 

:이 경고를주고있다

if (dtfacturi[i].CANTITATE == null) 
    { 
    //do something 
    } 

그러나 내 코드를 실행할 때 다음 예외가 발생합니다.

StrongTypingException 
The value for column 'CANTITATE' in table 'XLSFacturi' is DBNull. 

어떻게 해결해야합니까? DB에서 데이터로 작업하는 동안

if (DBNull.Value.Equals(dtfacturi[i].CANTITATE)) 
{ 
    //do something 
} 

답변

3

및 NULL 값이 DBNull 클래스 대신 .NET 널 (null)을 사용하여 확인해야합니다

+0

불행히도 나는 DBNull과 동일한 결과를 얻는다. 데이터베이스에서 0을 null로 대체 할 저장 프로 시저를 추가 할 것으로 생각된다. – Iulian

1

데이터베이스의 NULL은 null과 다르므로 데이터베이스 NULL을 확인하려면 IsDBNull을 사용해야합니다.

편집 : DBNull.Value보다는 VB 특정 IsDBNull과 비교 C#

와 VB.Net을 혼합.

1

이 시도 :

if (dtfacturi[i].CANTITATE == DBNull.Value) 
{ 
    //do something 
} 
1

'더블'유형의 값이 실제로 결코 널; double 배열로 내보내려면 데이터베이스에 두 개의 열이 있어야합니다. 하나는 데이터를 포함하고 다른 하나는 데이터가 유효한지 여부를 나타내는 플래그를 포함합니다.

이것은 실제로 데이터베이스 - 어레이 어댑터 코드의 버그입니다. XLSFacturiTableAdapter에 대한 Google 조회수를 찾을 수 없으므로 누구에게 외칠 지 잘 모르겠습니다.

0

coloumn이 방법 널인 경우 확인 TypedDataSets를 사용 ..

if (dtfacturi[i].IsCANTITATENull()) 
    { 
     //do something 
    } 

또한 C# 1 널 데이터베이스 널 다르다, 참고. coloumn의 유형은 널이 될 수없는 값 유형 인 double입니다. coloumn 값이 null인지 확인하려면 DBNull.Value와 비교해야합니다.