자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

Q, 

FireDAC-MySQL 사용 중 '!abc'와 같이 느낌표와 문자 사용 시 문자가 없어지는 현상이 발생합니다.

 

  sql := 'UPDATE USER SET ADDRESS = ''!abcd'' WHERE USER_ID = 1';

  FDQuery2.SQL.Text := sql;
  FDQuery2.ExecSQL;
 

위와 같이 실행하면, ADDRESS 필드의 값이 공백으로 업데이트 됩니다.

 

A, 

코드를 분석해 보니, MySQL에서 느낌표('!')를 매크로 접두문자로 사용하는 것으로 파악됩니다.(관련된 문서는 찾기 어렵네요.)

FireDAC.Phys.SQLPreprocessor.pas 소스코드의 ProcessCommand 메소드 소스 보면 아래와 같은 구문이 있습니다.

(일부)

      case GetChar of
      '!', '&':
        if Instrs * [piExpandMacros, piCreateMacros] <> [] then begin
          ProcessMacro(FCh);
          GetChar;
        end;
위 코드는 느낌표로 시작되는 경우 매크로로 인식해 매크로 처리를 합니다.

 

위 과정 중 문자열이 누실될 수 있습니다.

 

해결방법은 다음과 같습니다.(1번 방법이 가장 좋은 방법입니다.)

1) 파라메터를 사용합니다. SQL문을 직접 작성하는 경우 SQL Injection과 같은 보안취약점이 발생할 수 있습니다.

가능한 파라메터를 사용하시기 바랍니다.

  sql := 'UPDATE USER SET ADDRESS = :ADDR WHERE USER_ID = 1';

  FDQuery2.SQL.Text := sql;
  FDQUery2.ParamByName('ADDR').AsString := '!abcd';
  FDQuery2.ExecSQL;
 

2) 매크로를 사용하지 않도록 FDQuery 옵션을 수정합니다.

TFDQuery.ResourceOptions의 MacroCreate, MacroExpand 항목을 False로 변경합니다.

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 39915
공지 유용한 관련 사이트 관리자2 2014.03.20 79440
1372 C/S 시스템을 위한 모바일 개발 DataSnap이 좋은지 REST 웹서비스 가 좋은지? [3] 미스터몽키 2015.09.04 652
1371 내장 브라우저와 Ahalab Safe transation 문제 [1] 파랑 2017.08.01 652
1370 스트링그리드에서 특정셀의 컬러 변경 문의 [1] 포세가이 2019.03.12 652
1369 델파이툴 관련 문의 [1] 최마이클 2015.04.21 652
1368 [질문]모바일에서 앱테더링(블루투스 통신) 안되는 문제 [6] 가라사대 2015.06.26 652
1367 xe10.2 버전 서브 폼닫기 안됨 [2] 텔로스김 2017.05.12 653
1366 Raize 컴포넌트 사용방법 문의 [1] 이영진 2017.07.19 653
1365 delphi7에서 dbe를 이용한 mssql에서 저장프로시져 호출하여 작업하면 이상없는데. xe10.4에서 fireDAC을 이요하면 멈춤 추도사 2021.04.08 654
1364 안드로이드 모바일과 PC USB로 통신 [1] 권동한 2020.04.22 655
1363 string을 포함한 모든 형변환부분 및 기타 참고사항 설명자료 문의. [1] radio 2015.03.02 655
1362 XE7 블루투스 통신 [1] 최영준 2015.04.24 655
1361 움직이는 3D 배경이나 물체를 구현가능 한가요? [2] 쿠리 2018.08.10 656
1360 리스트박스 PACKETRECORDS [6] 김하나 2015.05.08 656
1359 [질문] DataSnap과 Mobile 연결 [2] 오는새벽 2021.02.25 656
1358 [공유] 파이어몽키 모바일 화면 개발 시 디자인 적용이 용이한가요? Humphery 2015.03.19 658
1357 하이브리드 앱 개발 관련 문의 [3] 사랑남 2015.06.17 659
1356 시애틀 관련 패키지 설치 문의 입니다. [1] 시애틀커피 2020.02.25 661
1355 앱 화면을 가로로 고정시켜서 만들고 싶습니다. [1] 손보라 2015.04.01 661
1354 델파이에도 C#에 있는 LINQ기능이 있나요? [1] 베스트드레곤 2015.04.02 661
1353 iOS 앱 심사 시 IPv6문제;; [3] 델라인 2016.09.23 662