공부하는 안경딸기

[WPF] System.InvalidCastException '열에 널 데이터가 있습니다' 본문

WPF

[WPF] System.InvalidCastException '열에 널 데이터가 있습니다'

안경딸기 2021. 12. 28. 22:39

--- 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