본문 바로가기

무언가 만들기 위한 지식/Win32/MFC

MFC SQL 연동하여 파일경로 저장시, Parsing Code

MFC와 My-SQL을 연동하여 사용하였었다.
내용중 사진 파일의 경로 DB에 저장할 필요가 있었는데, 그 정보가 제대로 저장되지 않는 현상이 생겼다.
이유는 다른 아닌 "\"가 SQL상에 저장될때 인식되지 않았던 것.!
이럴때는 "\"로 저장하면 않되고, "\\"로 저장하여야 한다.
파일 경로를 CString으로 저장하고 있었는데, 이 CString을 파싱하여 문장내 모든 "\""\\"로 바꿔주어야 했다.

그래서 간단한 Parsing Code를 작성하였다.
(Parsing된 CString상태로 저장해 두어야 DB에서 꺼낼때 원하는 값을 얻어 적용할 수 있다.)

void CInputRecipes::parseSTR(CString *temp){
 int len=(*temp).GetLength();
 for(int i=0;i<len;i++){
  if((*temp).GetAt(i)=='\\'){
   (*temp).Insert(i,'\\');
   i++;
  }
 }
}

Call By Reference로 구작성하기 위해서,
(값복사가 아니라 인자 값 자체를 수정하기 위해)
CString *를 인자값으로 받았다.
위 코드를 거치면 인자로 받은 CString상의 "\"는 모두 "\\"로 변환되게 된다.

※ \는 C,CPP상에서 \t, \n등으로 사용되기 때문에 일어나는 현상이다.