2013-02-16 6 views
1

문제 정의 : SQL Server 데이터베이스에 테이블이 있습니다. 이 테이블은 image 유형의 컬럼을 가지며 널 값을 허용합니다. 나는 SqlDataReader을 사용하여이 표를 읽고 가능한 경우 이미지를 보여 드리겠습니다. 이미지 열이 널인지 확인하려면 여부 나는이image 열이 null인지 여부를 확인하는 가장 좋은 방법은 무엇입니까?

SqlDataReader reader = command.ExecuteReader(); // command is a SqlCommand 

while(reader.Read()) 
{ 
    if(reader["Image"] != null)  // Image is a column name of the table 
    { 
     //Do something 
    } 
} 

결과했다 : 내가 처음 시도 무엇

하지만 null로 동일하지가 (나는 또한 Equal 방법을 확인). 그것은 '아무튼 왜 그래서 나는이 코드와 그 작업을 시도했지만 궁금 : 데이터 (SQL 서버에 내가 실제로 널 볼 수 있습니다)를 삽입하지 않은 내가 두 번째로 시도 무엇

경우에도이 열은 null는 없다 t는 null을 반환합니다.

SqlDataReader reader = command.ExecuteReader(); // command is a SqlCommand 

while(reader.Read()) 
{ 
    if(reader["Image"].GetType() != typeof(System.DBNull)) 
    { 
     //Do something 
    } 
} 

질문 :이 동작을 설명하는 어떤 생각? SQL Server 테이블에서 Image 유형의 열이 null인지 여부를 확인하는 더 좋은 방법이 있다면 나는 기뻐할 것입니다.

+0

두 번째 형식에서 'else'를 사용하여 이미지 데이터가 없을 때 가능한 모든 것을 인쇄 해보십시오. 고맙습니다. 대답은 – Floris

답변

4

이렇게하면 DbNull을 확인하면됩니다.

if(reader["Image"] != DbNull.Value)  // Image is a column name of the table 
{ 
    //Do something 
} 
+0

입니다. 왜 이것이 단순한 'null'값과 다른지 설명 할 수 있습니까? –

+0

@HosseinNarimaniRad이 질문은 훌륭한 답이 있습니다. http://stackoverflow.com/questions/4488727/what-is-the-point-of-dbnull –