Oracle DataReader를 통해 읽을 때 NULL 값을 처리하시겠습니까?
저는 제 첫 ASP를 만들고 있습니다.넷 애플리케이션, 그리고 많은 장애물(주로 최근 MVC5 프로젝트가 진행 중인 WinForms의 배경)에 부딪히고 있는 것 같습니다.
다음을 사용하여 DB 연결을 성공적으로 만드는 중입니다.OracleCommand
그리고 내 쿼리를 실행하지만, 내가 행을 읽으려고 시도할 때 나는 받는 것입니다.Column contains NULL value
의 두 번째 줄에odr.GetDecimal(1)
오라클 데이터 리더를 통해 읽을 때 null 값을 처리하는 방법을 아는 사람이 있습니까?
내 코드는 다음과 같습니다.
List<YearsOfService> yearsOfService = new List<YearsOfService>();
string SQL = "SELECT SCHOOL_YEAR as YEAR, " +
"TOTAL_SERVICE_CREDIT as ServiceCredited, " +
"RETIREMENT_SALARY as Salary, " +
"SOURCE_VALUE as CoveredEmployer " +
"FROM " + Schema + ".RANDOM_ORACLE_TABLE a " +
"WHERE MEMBER_ACCOUNT_ID = :memberAccountId";
DbConnection dbc = new DbConnection();
OracleCommand cmd = dbc.GetCommand(SQL);
cmd.Parameters.Add(new OracleParameter("memberAccountId", memberAccountId));
OracleDataReader odr = cmd.ExecuteReader();
int counter = 0;
if (odr.HasRows)
{
while (odr.Read())
{
YearsOfService yos = new YearsOfService();
yos.Year = odr.GetInt16(0);
yos.ServiceCredited = odr.GetDecimal(1); // Error on Second Pass
yos.Salary = odr.GetDecimal(2);
yos.CoveredEmployer = odr.GetString(3);
yearsOfService.Add(yos);
counter++;
}
}
return yearsOfService;
}
나는 NULL에 대한 간단한 검사를 생각했고, 그렇다면 0으로 대체합니다.Decimal
value)는 다음과 같이 작동하지만 운이 없습니다.동일한 오류:yos.ServiceCredited = Convert.IsDBNull(odr.GetDecimal(1)) ? 0 : odr.GetDecimal(1);
.
전체 오류:
'System' 유형의 예외입니다.Oracle에서 InvalidCastException'이(가) 발생했습니다.DataAccess.dll이지만 사용자 코드에서 처리되지 않았습니다.
추가 정보:열에 NULL 데이터가 포함되어 있습니다.
반환되는 두 행의 형식은 다음과 같습니다.
Year|CreditedService|Salary |CoveredEmployer
2013|0.70128 |34949.66|ER
2014|NULL | 2213.99|NULL
진행하는 최선의 방법에 대한 조언이 있는 사람?Oracle Data Reader를 통해 읽을 때 NULL 값을 수신하는 경우 어떻게 처리해야 합니까?
yos.ServiceCredited = odr.IsDBNull(1) ? 0 : odr.GetDecimal(1);
OracleDataReader
를 제공합니다.IsDBNull()
방법.
그리고 의관들은 우리에게 이것을 요구합니다.
이 메서드를 호출하기 전에 IsDBNull을 호출하여 null 값을 확인합니다.
언급URL : https://stackoverflow.com/questions/26024722/handle-null-values-when-reading-through-oracledatareader
'programing' 카테고리의 다른 글
왜 공포증을 사용할 수 없습니까? (0) | 2023.07.22 |
---|---|
교육을 받은 Keras 모델 로드 및 교육 계속 (0) | 2023.07.22 |
Visual Studio Code에서 긴 줄 자동 줄 바꿈 사용 안 함 (0) | 2023.07.22 |
장고 메모리 사용량을 줄입니다.낮게 매달린 과일? (0) | 2023.07.22 |
눈금 레이블에 대한 부동 소수점 형식 지정 (0) | 2023.07.22 |