공부하는 안경딸기
[WPF] System.InvalidCastException '열에 널 데이터가 있습니다' 본문
--- 2021/12/27 ---
개발중에 이런 에러를 만났는데 아무리 봐도 null 데이터가 없어서 뭐지? 했는데 알고 보니 DB에 null 값이 들어있었다.
딱 null이라는 값이 들어있던건 아니었고 다른 테이블을 참조하고 있는데 그 값이 하필이면 아무 값도 없는 곳이라 이런 에러가 발생한 듯 싶다.
참고로 DB에서의 null 이란...
아직 정의되지 않은 값 이다.
null이라고 꼭 표현되지 않아도 값이 들어가지 않으면 아직 정의되지 않았다고 판단하는 것 같다.
--- 2021/12/28 ---
오늘 또 이 에러를 만나서 다시 DB를 뒤져봤는데 이번에는 null이 없었다.
???
이번에야 말로 제대로 잡고 말겠어
try
{
while (reader.Read())
{
RModels.Add(new ReservationListModel() //.Add()를 해야지 데이터의 변화를 감지할 수 있음
{
PatientName = reader.GetString(reader.GetOrdinal("PATIENT_NAME")),
ReservationDT = reader.GetDateTime(reader.GetOrdinal("RESERVATION_DATE")),
Symptom = reader.GetString(reader.GetOrdinal("SYMPTOM")),
Doctor = reader.GetString(reader.GetOrdinal("STAFF_NAME")),
TreatType = reader.GetString(reader.GetOrdinal("TREAT_TYPE"))
});
}
}
catch(InvalidCastException e)
{//System.InvalidCastException '열에 널 데이터가 있습니다'를 해결하기 위해 catch문 구현
_logger.LogInformation(e + "");
}
finally
{
_logger.LogInformation("데이터 읽어오기 성공");
reader.Close();
}
기존에는 try문과 finally문만 있었는데 이번에 ms 문서 사이트를 뒤져보니 catch문에 InvalidCastException 예외 처리를 할 수 있는게 보여서 사용했더니 문제 없이 잘 돌아간다.
앞으로 똑같은 문제 만나면 DB에 null값이 있는지랑 그게 아니라면 위의 코드에 catch문을 참고할 것!
Comments