쿼리문을 만들 때 파라메터를 사용해서 값을 넣는 방식으로 프로그램을
짜고 있습니다.
예) select * from test where id = :pId;
이런식으로 쿼리를 주고,
Query.ParamByName('pId').AsString := 'jina';
이런식으로 값을 대입...
근데 이렇게 사용할 경우 select 한 결과가 가끔 '0' 으로 나옵니다.
혹시나 해서 디비에서 직접 쿼리를 실행시켰더니
( select * from test where id = 'jina' )
정상적으로 몇 로우가 있다고 나옵니다.
델파이에서도 파라메터를 사용하지 않고 직접
select * from test where id = ''jina''
이렇게 쿼리를 만들어서 사용하면 결과가 제대로 나옵니다.
파라메터를 쓸 경우 왜 결과가 제대로 안 나오는 지 모르겠습니다.
같은 사무실에 있는 다른 직원도 같은 경험을 했다고 합니다.
그래서 혹시 드라이버 문제인가.. 라고 추측 하고 있는데..
이런 경험 있으신분.. 해결을 어떻게 했는지 .... 조언 부탁드립니다.
파라메터로 안 쓰고, 값을 직접 대입 해 주면 쿼리가 넘 지저분
해 지거든요...
그럼, 좋은 하루 보내세요..
참고가 되었으면 합니다.
현재 쓰고 있는방법도 있고
다음과 같은 방법도 있습니다.
예1)
With Query1 do
begin
Clear;
SQL.Close;
SQL.Add('select * from test');
SQL.Add('where id = :pId');
Params[0].AsString := 'jina';
Open;
end;
0은 인덱스 값입니다.. 파라미터값의 사용한 순서대로
표시 합니다.
예2)
With Query1 do
begin
Clear;
SQL.Close;
SQL.Add('select * from test');
SQL.Add('where id = ''' + 'jina' + '''');
Open;
end;
위의 ''' 과 '''' 은 델파이에서 ' 를 사용 사용 하기 위해서는
먼저 ' 를 하고 ' 을 하나 더 사용 하면 됩니다.
C에서 와 같은 거죠.....
그럼 좋은 하루 되십시오..