FireDAC 数据库开发笔记(4. FireDAC 进阶)

FireDAC 进阶

  • 存取MetaData

💡  程序员可存取数据库的MetaData,例如数据库的Catalog. Schema, Package等信息,或是数据库中的数据表,字段等信息。

TFDConnection组件提供了数个方法可让程序员存取数据库中的MetaData

       

procedure TfmMainForm.GetTableMetaData;
var
	aSL : TStringList;
begin
    aSL := TStringList.Create;
    try
        dmConn.fdConnection.GetTableNames('','','',aSL);
        DisplayMetaData(aSL) ;
    finally
        aSL.Free;
    end;    
end;

 

  • 宏功能(Macro)

FireDAC提供了丰富的Macro功能让开发人员使用,简单的说所谓的宏就是FireDAC在把SQL命令送到后端执行时会根据宏功能定义先把SQL中使用的宏替换成相对应的字符串之后再把替换的SQL命令送出。

    💡  要使用FireDAC的宏功能,要先把TFDQuery.ResourceOptions.MacroCreate 和 ResourceOptions.MacroExpand 特性值设为 True

💡   FireDAC使用  '!'  或 '&'  符号代表宏

FDQuery.SQL 命令为

SELECT * FROM &TableName

procedure TForml.ButtonlClick(Sender: TObject);
begin
	FDQueryl.Active := False;
	FDQueryl.MacroByName('TableName').AsRaw := Editl.Text;
	FDQueryl.Active := True;
end;

宏SQL命令

SELECT &FieldList FROM &TableName
  • Update SQL 客制化数据

💡 TUpdateSQL组件

    1. 允许程序员定义客制化更新
    2. 允许程序员在FireDAC  无法处理类似 Join SQL 的数据更新时提供更新数据的能力

    💡 Update SQL 客制化数据   (139页)

                1. 用 TUpdateSQL Editor 来产生 SQL 语句, TUpdateSQL的 ModifySQL 属性 填写 产生的SQL语句 

     2. FDQuery 组件的 CachedUpdates 属性 = True

procedure TForml .ButtonlClick(Sender:TObject);
Var
  NumErrors:Integer;
begin
  SeminarsTable.OnUpdateRecord := nil;
  SeminarsTable.UpdateObject := FDUpdateSQLl;
  NumErrors := SeminarsTable.ApplyUpdates(0);
  if NumErrors =0 then
  begin
    SeminarsTable.CommitUpdates;
    ShowMessage('更新数据成功!');
   end
   else
     ShowMessage('产生'+ intToStr(NumErrors)+,'个更新错误');
     
 end;

 因此ApplyUpdates就会使用 FDUpdateSQL1 组件中的 ModifySQL 特性中的 Update SQL.

  •  使用TUpdateSQL组件处理复杂数据更新 (143页)

  SQL Join 数据是只读的,打开CachedUpdates功能也只能让用户可修改主数据表的数据,而无法修改从数据表
  因此要允许可修改从数据表,除了开启CachedUpdates功能程序员必须再开启TFDQuery组件的UpdateOptions.UpdateNonBaseFields = True 

 

TFDQuery组件的 CachedUpdates := True

TFDQuery组件的 UpdateNonBaseFields := True

  • 异步处理数据

          要使用 FireDAC 的异步数据处理功能,程序员必须 增加  TFDManager 组件, 再设定 FDQuery 组件的 ResourceOptions.CmdExcMode 特性值

 

 

 

  •  

 

posted @ 2022-05-25 20:21  麦麦提敏  阅读(1083)  评论(0编辑  收藏  举报