2013-07-09 2 views
2

데이터베이스 Null 값을 0으로 피하려고 시도하고 null이 아닌 경우 원래 값을 가져옵니다.데이터베이스에서 값을 가져 오는 중 DBNULL.Value가 항상 True를 반환 함

하지만 몇 가지 문제가 있습니다.

int Value = 0; 
    for(int i = 0; i < tblValue.Rows.Count; i++) 
    { 
     if (tblValue.Rows[i][""]== DBNull.Value)//Here it always returns true.. even there are values at Position 1 and 
     { 
     Value += 0;       
     } 
     else 
     { 
     Value += Convert.ToInt32(tblValue.Rows[i][""]); 
     } 

    } 

모든 아이디어 : 여기

내 샘플 코드인가?

DBNUll 값을 잘못 확인합니까?

+6

빈 이름으로 열을 확인하는 이유는 무엇입니까? 내게 잘못되었습니다. (왜 '값 + = 0'으로 귀찮게합니까?) –

+2

빈 열 ""에 대한 색인을 생성하고 있습니다. 확실하게하고 싶니? 너 뭐야? r 데이터베이스 쿼리 또는 어떤 열을 반환합니까? 그런데 데이터베이스에서이 합계를 만들고 싶지 않은지 확인하려면 'SELECT SUM (COLUMNNAME) FROM XXX'을 사용하십시오. 이 방법은 더 효율적입니다. – saamorim

+0

이것은 샘플 코드 일뿐입니다. 내 실제 코드에 열 이름이 있습니다. – dnts2012

답변

1

예. 시도 (DBNull.Value.Equals (tblValue.Rows [I] [ ","]);

http://msdn.microsoft.com/en-us/library/system.dbnull.value.aspx

+0

감사합니다. 그러나 작동하지 않았습니다. 나는 같은 결과를 얻었다. 그것의 반환 된 위치 1에 널 값 나는 db 값이 null이 아닌 것을 안다. :( – dnts2012

+1

그렇다면 이것이 작동하지 않고 널 값을 대체하려고 시도하는 대신 SQL 문에서 대신 시도하십시오 : 대신 : 'MOOSE에서 라마 선택은'수행 라마가 null의 경우 '을 선택 COALESCE는 (라마, 0) MOOSE에서' ,이 같은 모듈 기능이없는 0 – jgriffin

1

이 시도 :

int Value = 0; 
for(int i = 0; i < tblValue.Rows.Count; i++) 
{ 
    if (!IsDBNull(tblValue.Rows[i][""])) 
    { 
     Value += Convert.ToInt32(tblValue.Rows[i][""]); 
    } 
} 

을베이스 값 인 경우에만 Value 변수를 증가 NOT NULL

+0

C 번호로 대체합니다 VB.NET 않습니다 afaik .... – Alxandr

+0

@ Alxandr - [C# Convert.IsDBNull 메서드에 대한 MSDN 설명서 (http://msdn.microsoft.com/en-us/library/system.convert.isdbnull.aspx?cs- save-lang = 1 & cs-lang = csharp # code-snippet-1) –

+0

예, 괜찮습니다.하지만 여전히 코드가 유효하지 않습니다. 컴파일), 안돼? – Alxandr

관련 문제