>백엔드 개발 >C++ >C#에서 SQL 매개변수에 할당할 때 DBNull 값을 처리하는 방법은 무엇입니까?

C#에서 SQL 매개변수에 할당할 때 DBNull 값을 처리하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-11 08:48:45973검색

How to Handle DBNull Values When Assigning to SQL Parameters in C#?

SqlParameter에 DBNull 값을 할당할 수 없습니다

SqlParameter에 null 값을 할당하려고 하면 다음 코드에서 오류를 보고합니다.

<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];    
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex == null) ? DBNull.Value : AgeItem.AgeIndex;
parameters[0] = planIndexParameter;</code>

문제는 ?: 연산자가 반환 유형을 결정할 수 없다는 것입니다. 왜냐하면 int 유형 값일 수도 있고 DBNull 유형 값일 수도 있고 둘이 호환되지 않기 때문입니다.

해결책:

이 문제를 해결하려면 다음 방법을 선택할 수 있습니다.

  • 캐스팅: AgeIndex 인스턴스를 객체 유형으로 캐스팅합니다. 이는 ?: 연산자의 요구 사항을 충족합니다.
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; </code>
  • null 병합 연산자 사용: ?? null 병합 연산자 사용:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; </code>

?: 연산자에 대한 MSDN 문서에 따르면 first_expression과 second_expression은 동일한 유형이어야 합니다. 그렇지 않으면 한 유형이 암시적으로 다른 유형으로 변환될 수 있습니다.

위 내용은 C#에서 SQL 매개변수에 할당할 때 DBNull 값을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.