所謂命名查詢(Named Query),指用戶端的Query通過指定的名稱,使用伺服器端的Query操作(查、增、删、改)資料庫。通過Named Query機制,實作事先在伺服器端設定好SQL,達到在用戶端不用寫SQL的目的,同時,我們隻需要将QueryService的AllowClientNamedQuery設定為True。
看一下具體的使用:
伺服器端放一個kbmMWUniDACQuery:
with kbmMWUniDACQuery do begin
Name:='T1';//用戶端在SQL中調用的名稱
Published:=True;//用戶端可見,不然出Query xxx not defined(Server)錯誤.
KeyFieldNames:='F1';//支援用戶端增、删、改
TableName:='T1';//支援用戶端增、删、改
SQL.Text:='Select * from T1 where F1<=:F1';//伺服器端的SQL,這裡做了一個參數F1,支援用戶端按參數查詢
Resolver:=kbmMWUNIDACResolver1;
ConnectionPool:=Form1.kbmMWUNIDACConnectionPool1;
end;
用戶端調用方法:
procedure TForm2.Button1Click(Sender: TObject);
begin
//這是直接SQL調用的方法
// kbmMWClientQuery1.Close;
// kbmMWClientQuery1.Query.Clear;
// kbmMWClientQuery1.Query.Add('Select * from
T1');
// kbmMWClientQuery1.Open;
//這是Named Query方法:
kbmMWClientQuery1.Close;
kbmmWClientQuery1.Query.Text:='@T1';//T1,在伺服器端定義的查詢元件的Name屬性
kbmMWClientQuery1.FieldDefs.Update;//取得伺服器SQL中的參數
kbmMWClientQuery1.Params.ParamByName('F1').AsInteger:=5;
kbmMWClientQuery1.Open;
通過上面的代碼,用戶端能夠通過伺服器實作對一個表的操作了!