Query문을 입력할때 Param을 사용하여 입력하면...
Query.SQL.Add('Select * From User Where User_ID = :UserID');
Query.ParamByName('UserID').AsString := UpperCase(sID);
요렇게 해서 정작 삽입된 Query문을 알아내기위한 손쉬운 방법이 없을까요??
음...Query.Text는 'Select * From User Where User_ID = ?' 이렇게 나오고..
Query.SQL.Text는 'Select * From User Where User_ID = :UserID'이렇게 나와서..
정작...실제 UserID값이 들어간 Query문은 알수가 없네요...
흑..알아낼려면...Query.Params를 뒤져봐야하나요?
만약 TParam이 여러개고...각각 타입이 다르다면....
각 TParam이 타입이 다 다르다면.....-_-;;
이거 손쉽게 처리할 방법이 없을까요??
음....머리를 쫌만 더 굴려보니깐...
쉽게 되는군요..-_-;;
unit QueryExUnit;
interface
uses
dbtables;
type
TQueryEx = class(TQuery)
public
function GetRealQuery: string;
end;
implementation
uses
SysUtils;
{ TQueryEx }
function TQueryEx.GetRealQuery: string;
var
nIndex: Integer;
sQuery: string;
begin
if Self.ParamCount = 0 then
begin
Result := Self.SQL.Text;
Exit;
end;
sQuery := Self.SQL.Text;
for nIndex := 0 to Self.ParamCount - 1 do
begin
sQuery := StringReplace(sQuery, ':' + Self.Params[nIndex].Name,
Self.Params[nIndex].AsString, []);
end;
Result := sQuery;
end;
end.
혹 잘못된점이나 지적할 사항있으시면..
답글 주시기바랍니다..
-- F o r r e s t --
곰푸 wrote:
> Query문을 입력할때 Param을 사용하여 입력하면...
>
> Query.SQL.Add('Select * From User Where User_ID = :UserID');
> Query.ParamByName('UserID').AsString := UpperCase(sID);
>
> 요렇게 해서 정작 삽입된 Query문을 알아내기위한 손쉬운 방법이 없을까요??
>
> 음...Query.Text는 'Select * From User Where User_ID = ?' 이렇게 나오고..
> Query.SQL.Text는 'Select * From User Where User_ID = :UserID'이렇게 나와서..
>
> 정작...실제 UserID값이 들어간 Query문은 알수가 없네요...
>
> 흑..알아낼려면...Query.Params를 뒤져봐야하나요?
> 만약 TParam이 여러개고...각각 타입이 다르다면....
> 각 TParam이 타입이 다 다르다면.....-_-;;
> 이거 손쉽게 처리할 방법이 없을까요??
>