자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 17240
공지 유용한 관련 사이트 관리자2 2014.03.20 56122
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99558
653 안녕하세요 datasnap 연결에 대해 질문드립니다. [1] vast 2018.09.05 303
652 delphi 10.2 sdk 설정 관련 문의 [1] file 신우 2018.09.07 351
651 윈도우10과 이전 윈도우에서 VCL 버튼이나 메지지 상자 코너 표시형태 문의입니다. [2] KJ 2018.09.08 372
650 카메라 컴포넌트 관련 문의드립니다. [6] 최봉원 2018.09.10 862
649 delphi10.2 SDK 관련 설정 문의 2 신우 2018.09.10 228
648 윈도우 프로그램 배포(인증문제) [1] 스카이 2018.09.10 3523
647 Client 에서 REST Request 시, server certificate 체크 질문드립니다. [2] Joon 2018.09.11 1679
646 iOS 11.4 아직 불가능한가요? [2] 엽기토끼이요 2018.09.17 275
645 윈도우10 에서 XE7 Fastreport5 오류 문의 [1] juljoo 2018.09.18 171
644 퀀텀그리드 이벤트 관련 문의드립니다. [1] BW 2018.09.19 591
643 delphi 10.2.3 +Xcode 10 + IOS 12 환경에서 빌드시 왜 에라메세지가 뜨는지요? [1] file 화이부동 2018.09.26 471
642 IOS 12 대응에 관해서 [1] 돌팅 2018.10.01 475
641 FireDAC사용 쿼리하는 동안 진행중 표시 어떻게..? [2] 공감 2018.10.01 591
640 TMS FMX ZBar Reader 사용하신분 계시나요? 생각 2018.10.04 189
639 delphi 베를린 android database 에러 질문합니다. [4] devdev 2018.10.05 365
638 앱스토어 심사거부건 도움 부탁합니다. [1] 돌팅 2018.10.06 617
637 RAD Studio 사용 중 [1] file 초코코초 2018.10.08 267
636 델파이 10.2 사용중인데 알람이 자꾸 뜹니다. [3] 테리 2018.10.12 389
635 No provisioning profile found for the selected build configuration 에라가 나는데요? [3] file 화이부동 2018.10.12 332
634 FireDAC. FDMEMTable의 txt 반출관련 속도개선 문의드립니다. [4] 오바라미 2018.10.16 238