programing

Oracle DataReader를 통해 읽을 때 NULL 값을 처리하시겠습니까?

cafebook 2023. 7. 22. 10:24
반응형

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으로 대체합니다.Decimalvalue)는 다음과 같이 작동하지만 운이 없습니다.동일한 오류: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

반응형