Q&A

  • TQuery를 사용하여 Insert 작업시 큰따옴표 문제
TQuery를 사용하여 Insert 작업시 큰따옴표가 포함된 스트링 타입의 필드에 Insert시 문제가 발생합니다.

아마도 큰따옴표가 짝수개 존재할때는 에러가 않나는거 같은데 문자열 안에 큰따옴표가 달랑 하나 있는 경우은 Insert 시에 에러가 발생하네요.

해결방법이 있나요??
4  COMMENTS
  • Profile
    nilriri™ 2003.12.17 06:45
    StringReplace() 함수를 이용해서 "  를 ""  로 바꿔주시면 되겠네요..

  • Profile
    최석기 2003.12.17 06:52
    그러면 원하는 내용은 큰따옴표 하나인데 원치않는 내용이 들어가게 되네요..

    큰따옴표가 연속해서 2개가 들어가게 되죠..

    Toad나 SQL Plus, SQLGate를 사용해서 해봐도 되는데 왜 델파이 TQuery를 사용해서 Insert 사용시는 않될까요?

    SQLGate도 델파이를 사용해서 만든 툴인거로 아는데..

  • Profile
    nilriri™ 2003.12.17 20:11
    그런데 이제 생각해 보니.. "  이거 집어넣는데 에러가 왜 나는지??

    에러 메시지가 뭔데요?

    혹시 해당부분 소스도 함께 올려 주실 순 없는지??

    dbms는 뭘 쓰시나요?

    제가 ,혹시나 하여 TQuery, TADOQuery, TADOCommand로

    모두 테스트해 보았으나 아무런 에러없이 잘 insert 됩니다..

    xp, del6, mdac2.8, mssql7.0환경으로 테스트 한겁니다.

    즐프~

  • Profile
    최석기 2003.12.17 20:16
    안녕하세요...
    DBMS의 문제는 아닌거 같네요.. 오라클 SQL 플러스를 사용해서 동일한 쿼리를 했을 경우에는 문제가 없습니다..

    아마도 TStrings가 처리하는 부분이 문제인거 같네요..

    Double Quotation이 쌍(Pair)로 나올 경우는 문제가 없는데 홀수개로 나올때가 문제인듯 싶네요..

      Query1.SQL.ADD('INSERT INTO AW_ACCESSLOG ');
      Query1.SQL.ADD('( ');
      Query1.SQL.ADD('  SERVER_ID, ');
      Query1.SQL.ADD('  ACCESSLOG_DATE, ');
      Query1.SQL.ADD('  ACCESSLOG_TIME, ');
      Query1.SQL.ADD('  ACCESSLOG_INDEX, ');
      Query1.SQL.ADD('  HOST, ');
      Query1.SQL.ADD('  METHOD, ');
      Query1.SQL.ADD('  EVENT, ');
      Query1.SQL.ADD('  ERRORCODE, ');
      Query1.SQL.ADD('  ENTITYCD, ');
      Query1.SQL.ADD('  ENTITYCD2 ');
      Query1.SQL.ADD(') ');
      Query1.SQL.ADD('VALUES ');
      Query1.SQL.ADD('( ');
      Query1.SQL.ADD('''001'', ');
      Query1.SQL.ADD('''20010604'', ');
      Query1.SQL.ADD('''044028'', ');
      Query1.SQL.ADD('10, ');
      Query1.SQL.ADD('''143.248.234.111'', ');
      Query1.SQL.ADD('''GET'', ');
      Query1.SQL.ADD('''/scripts/..%c1%1c../..%c1%1c../mssql7/install/pubtext.bat""+&+dir+c:+.exe'', ');  <-- 이부분이 문제.
      Query1.SQL.ADD('''404'', ');
      Query1.SQL.ADD('''06'', ');
      Query1.SQL.ADD('''032'' ');
      Query1.SQL.ADD(')');
      Query1.ExecSQL;