2014-04-21 4 views
0

비어 있습니다 :SqlDataReader 개체는 해당 열을 발견하는 방법을 나는 쿼리의 결과를 읽고 일부 열이 비어있는 경우이 내가 시작하는 방법입니다 발견하려고

dr[4].ToString() == String.Empty 

IT는 필요한 작업을 만들지 만, 나는 이것이 내가 제대로하고 우아하게 그것을 어떻게 당신이 내게 조언 해 줄 수 있습니다 (이 해킹이 아닌 솔루션)과 같은 돈`t? 하지

+0

"비어 있음"이라고 말하면 null이 포함됩니까? var/char 유형 열에 대해서만 염려합니까? – attila

+0

@attila 1.NO 2. int 타입 컬럼에 관심이있다 – Yakov

답변

3

빈은하지 INT 값에 존재하는 어떤 데이터베이스와 작업 할 때 올바른 것은 유일하고 진정한 "빈"입니다 를 사용합니다.

SqlDataReader rdr = cmd.ExecuteReader(); 
int colIndex = read.GetOrdinal("MyColumnName"); 

while (rdr.Read()) 
{ 
    // [true | false] your validation goes here!; 

    if (rdr.IsDBNull(colIndex)){ 
     //value is null 
    } 
} 

빈 값으로 0, "또는 1/1/1900을 사용하려면 맞춤 처리가 필요합니다.

1

이는 지능

Int32? i = rdr.IsDBNull(2) ? (Int32?)null : rdr2.GetInt32(2); 
+0

@ChrisMoutray 좋은 지적 – Paparazzi

0

또 다른 가능성은 nullable 형식을 사용하는 경우 내가

string UserInitialssql = rdr.IsDBNull(2) ? String.Empty : rdr.GetString(2); 

을 수행하는 방법이다. 예 :

SqlDataReader rdr = cmd.ExecuteReader(); 
while (rdr.Read()) 
{ 
    int? someNumber = rdr["ColumnName"] as int?; 
    if (someNumber == null) 
     // was NULL in database 
    else 
     // use someNumber.Value to get int 
}