> 백엔드 개발 > C++ > C#에서 '개체를 DBNull에서 다른 형식으로 캐스팅할 수 없습니다.' 오류를 처리하는 방법은 무엇입니까?

C#에서 '개체를 DBNull에서 다른 형식으로 캐스팅할 수 없습니다.' 오류를 처리하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-11 15:06:42
원래의
1074명이 탐색했습니다.

How to Handle

객체를 DBNull에서 다른 유형으로 변환할 수 없습니다

오류 설명:

"DBNull에서 다른 유형으로 개체를 변환할 수 없습니다"라는 오류 메시지는 DBNull 값(데이터베이스의 null 값을 나타냄)을 null을 허용하지 않는 유형(이 경우 Int64)으로 변환하려는 시도가 실패했음을 나타냅니다.

오류 이유:

제공된 코드에서 다음 줄은 "op_Id"라는 출력 매개 변수의 값을 Int64로 변환하려고 시도합니다.

<code>DataTO.Id = Convert.ToInt64(dataAccCom.GetParameterValue(IDbCmd, "op_Id"));</code>
로그인 후 복사

저장 프로시저가 이 매개변수에 대해 DBNull 값을 반환하면 오류와 함께 변환이 실패합니다.

해결책:

이 문제를 해결하려면 변환을 시도하기 전에 출력 매개변수의 값이 DBNull인지 명시적으로 확인하세요. DBNull인 경우 DataTO 개체의 해당 속성에 null 또는 기본값이 할당됩니다. 업데이트된 코드는 다음과 같습니다.

<code>var outputParam = dataAccCom.GetParameterValue(IDbCmd, "op_Id");
if (outputParam != DBNull.Value)
    DataTO.Id = Convert.ToInt64(outputParam);
else
    DataTO.Id = null; // 或分配默认值,例如 0 或 -1</code>
로그인 후 복사

이러한 수정을 통해 데이터베이스에 존재할 수 있는 null 값을 처리할 때 코드가 강력해졌습니다. outputParam != DBNull.Value을 사용하는 것이 !(outputParam is DBNull)보다 더 간결하고 명확하며 성능에는 큰 차이가 없습니다. DataTO.Idnull으로 설정하거나 기본값을 선택하는 것은 애플리케이션 논리와 DataTO.Id 속성 유형이 nulling을 허용하는지 여부에 따라 달라집니다.

위 내용은 C#에서 '개체를 DBNull에서 다른 형식으로 캐스팅할 수 없습니다.' 오류를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿