오류 설명:
"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.Id
을 null
으로 설정하거나 기본값을 선택하는 것은 애플리케이션 논리와 DataTO.Id
속성 유형이 nulling을 허용하는지 여부에 따라 달라집니다.
위 내용은 C#에서 '개체를 DBNull에서 다른 형식으로 캐스팅할 수 없습니다.' 오류를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!