Q&A

  • 질문]SQL문을 자동구분하여 실행시킬수 있는지 여부
안녕하세요 저는 Query문을 실행할수 있는 Sql Editor를 만들고 있습니다



문제는 입력받은 Sql문을 수행하여 화면에 결과값을 보여 줘야 하는데



Query문이 Select일때는 Open을 Update,Delete등일경우에는 ExecSQL명령



으로 Query문을 실행시켜야 되는데 이것을 자동으로 구분하여



Query문을 처리해줄수 있는 방법이 있는가 해서요 아님 다른방법이라도..



문제는 Query문의 앞부분에 참조용문구(예: /* remark용 abc */) 등이 몇줄



에 걸쳐 있으면 Query문이 Select 용인지,Update용인지 알수가 없습니다



참고로 저는 RichEditor로 Query문을 입력받아 그내용을 Query 컴포넌트를



사용하여 실행시켜 결과를 DBGrid로 출력하고 있습니다

3  COMMENTS
  • Profile
    Lost July 2001.12.12 01:31


    개인적으로 만든 프로그램에 아래와 같이 코딩하여 해결하였습니다.



    if Copy( Trim( Memo1.Lines[0] ), 1, 6) = 'SELECT' then

    Query1.Open

    else

    Query1.ExecSQL;



    다시 말해서, 공백문자를 모두 제거하여 앞에서 여섯글자가 SELECT 라는 문장이라면

    Open 하는 것이고, 아니면 ExecSQL 을 실행하는 것입니다.



    참고가 되셨길..

  • Profile
    어린왕자A 2001.12.11 04:19
    저는 ExecSQL메소드 대신에..

    Open메소드를 쓰면 ExecSQL메소드까지해주고 열어주더군요.

    Update, Delete를 했다면 결과를 또 보여줘야 하니깐..머 open계속 써두 되겠는데.







    건 wrote:

    > 안녕하세요 저는 Query문을 실행할수 있는 Sql Editor를 만들고 있습니다

    >

    > 문제는 입력받은 Sql문을 수행하여 화면에 결과값을 보여 줘야 하는데

    >

    > Query문이 Select일때는 Open을 Update,Delete등일경우에는 ExecSQL명령

    >

    > 으로 Query문을 실행시켜야 되는데 이것을 자동으로 구분하여

    >

    > Query문을 처리해줄수 있는 방법이 있는가 해서요 아님 다른방법이라도..

    >

    > 문제는 Query문의 앞부분에 참조용문구(예: /* remark용 abc */) 등이 몇줄

    >

    > 에 걸쳐 있으면 Query문이 Select 용인지,Update용인지 알수가 없습니다

    >

    > 참고로 저는 RichEditor로 Query문을 입력받아 그내용을 Query 컴포넌트를

    >

    > 사용하여 실행시켜 결과를 DBGrid로 출력하고 있습니다

  • Profile
    parkisu 2001.12.11 00:01
    건 wrote:

    > 안녕하세요 저는 Query문을 실행할수 있는 Sql Editor를 만들고 있습니다

    >

    > 문제는 입력받은 Sql문을 수행하여 화면에 결과값을 보여 줘야 하는데

    >

    > Query문이 Select일때는 Open을 Update,Delete등일경우에는 ExecSQL명령

    >

    > 으로 Query문을 실행시켜야 되는데 이것을 자동으로 구분하여

    >

    > Query문을 처리해줄수 있는 방법이 있는가 해서요 아님 다른방법이라도..

    >

    > 문제는 Query문의 앞부분에 참조용문구(예: /* remark용 abc */) 등이 몇줄

    >

    > 에 걸쳐 있으면 Query문이 Select 용인지,Update용인지 알수가 없습니다

    >

    > 참고로 저는 RichEditor로 Query문을 입력받아 그내용을 Query 컴포넌트를

    >

    > 사용하여 실행시켜 결과를 DBGrid로 출력하고 있습니다.



    안녕하세요.

    저도 같은 문제로 고민중입니다.

    저는 mysql을 쓰는데 Select가 ExecSql로 수행되어야 하는 경우도 있어서리...

    골치 아파 죽겠군요.

    생각끝에 편법을 써서 이렇게 해봤는데 어떨지 모르겠군요.



    try

    Query1.Open;

    except

    try

    Query1.ExecSql;

    except

    Query1.Close;

    end;

    end;



    이상 허접답변이었습니다.