본문 바로가기
개발 이야기/C# 이야기

C# Mysql blob NULL 판단하기 (blob 에러처리)

by 런던살자 2019. 6. 17.

 

안녕하세요 마블랑입니다.

 

얼마전에 C# 프로그램을 개발하던 중에 Mysql의 blob 컬럼에 이미지를 삽입하는 기능을 구현한 적이 있습니다.

 

이미지를 삽입했을때는 문제업이 잘 되었지만

 

blob 컬럼이 NOT NULL 이 아닌 관계로 이미지가 없을경우 에러가 발생하더군요

 

에러를 처리하기 위해 이런저런 방법을 시도해보고 하였지만 기존에 문자열 컬럼을 에러처리하는 방법으로는 처리가 되지 않더군요.

 

 

그래서 좀더 자료를 찾고 확인해보고 결국에는 해결을 하였습니다. 

MySqlCommand cmd = new MySqlCommand(Sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
  if (!(rdr["PHOTO"].Equals(System.DBNull.Value)))
  {
  	byte[] Image = (byte[])rdr["PHOTO"];
  	if (bImage.Length > 0)
 		pb_photo.Image = new Bitmap(new MemoryStream(Image));
 	else
 	 	pb_photo.Image = null;
  }
}
rdr.Close();

코드를 간단하게 하기위해 Mysql에 접속하는 부분과 쿼리문은 생략하고 데이터를 가져오는 부분만 표시하였습니다.

 

반복문 안에 조건문을 이용하여 에러를 검출할수 있습니다. 

 

rdr["PHOTO"].Equals(System.DBNull.Value)) 

 

System.DBNull.Value 은 DB에서 가져온값이 NULL을 나타내고 이것과 비교하여 데이터가 있는지 없는지 검사를 하는 구문입니다.

 

blob는 기존에 에러처리를 하듯이 rdr["PHOTO"].ToString() == "" 으로 검사해도 되지 않았기 때문에 위 코드와 같이 변경하여 사용하면 될듯합니다. 

 

자세한 사항은 코드를 참고하시기 바랍니다.

 

이상 마블랑이었습니다.

 

읽어주셔서 고맙습니다.

 

 

댓글