2009-10-22 3 views
2

최근 내 ASP.NET 프로젝트를 1.1에서 3.5로 변환했습니다. 만세! 현재 소수의 선택 필드가있는 양식을 개발 중입니다. 일반적으로, 나는 빈 줄을 검사하고 if 값을 0으로 설정하는 if 문을 추가하면서 코드를 살펴볼 것이다. 그래서, 그게 최선의 대신 각각의 필드에 대한 개인, nullable 변수를 선언하는 것이 좋습니다 궁금 해서요, 다음이 내 데이터베이스 업데이 트에 대한 매개 변수로 추가 할 수 있습니까? MSSQLS 2000을 사용하여 이미 해당 필드를 설정하여 null을 허용합니다.nullable 형식이 내 상황에 가장 적합합니까?

명확히하기 : 웹 양식에는 달러 금액 필드가 있습니다. 입력 값의 기본값은 0이지만 사용자가 0을 삭제하고 필드를 비워두고 양식을 제출하면 메서드의 인수 목록에있는 Convert.ToDecimal (MoneyField.Text)에 예외가 발생합니다. 이 모든 것을 데이터베이스에 제출하십시오. 내가 누락 된 이것을하는 더 깨끗한 방법이 있습니까?

답변

1

그것은 당신이 진정으로 널 (NULL) 많은 필드가 것이 이상한 것 같다,하지만 당신은 int (예를 들어)의 마법 도메인 값을 개별적으로 "값"을 설명하지 할 필요가 경우, 다음 예 : Nullable<T> 도움이 될 수 있습니다. (당신은 차이를 볼 경우) "값 null을 보내"하지 수동 "이 매개 변수를 전송하지 않습니다"의미 SqlParameternull로, 데이터 레이어에서 DbNull.Valuenull에서 번역해야합니다. 가능하지 않을 것

+0

나는 그것이 많은지 알지 못합니다. 양식에는 21 개의 필드가 있으며 그 중 9 개는 선택 사항이며 달러 금액입니다. 그래서 논쟁으로, 나는 노력하고있다 : Convert.ToDecimal (MoneyField.Text). 이제 그 입력란에 아무 것도 입력되지 않으면 변환이 실패합니다. 그래서 그 인수가 null이되도록 가장 깨끗한 방법을 찾으려고 노력하고있어, 그 null을 데이터베이스에 전달할 수 있습니다. –

+0

입력 된 필 드에 필요한 인서트 파일을 작성하십시오. 삽입 할 필드 목록을 만들고 hte rest를 잊어 버리십시오. –

+0

아직 목록을 다루지 않았기 때문에 가능한 옵션인지 알아보기 위해 약간의 독서를해야 할 것입니다. –

1
나는 물론 당신은 어떤 종류가 없다면 ... 현장 검증과 여기 nullable 형식 사이에 혼합 있다고 생각

... DateTime 말을하고는 null이되고 싶어 ... 사용하지 않는 (Nullable 유형)

그렇다면 ... 예 ... Null 가능 유형이 해결책입니다.

0

음, 계획과 비슷합니다.

당신은 동적 SQL을 공급 분야에 따라 빌드

static class NConv 
{ 
    static T? ToNullable<T>(string str) where T : struct 
    { 
     return (T?)(string.IsNullOrEmpty(str) ? default(T?) : Convert.ChangeType(str, typeof(T))); 
    } 

    static void HowTo() 
    { 
     double? myBonus = NConv.ToNullable<double>(null); 
    } 
} 
0

불구하고 통화의 몇 가지를 변경해야 할 것입니다.

관련 문제