FDManager
var sParams:TStringList;sParams.Add('Server=xx.xx.xx.xx');sParams.Add('User_Name=xxxxx');sParams.Add('Password=xxxxx');sParams.Add('Database=xxxxx');sParams.Add('DriverID=MSSQL');sParams.Add('Pooled=True');
sParams.Add('ExtendedMetadata=True'); //可以用來取得欄位屬性歸屬
FDManager1.AddConnectionDef('MSSQL_Pool', 'MSSQL', sParams);
FDConnection (與FDManager搭配使用,可以理解是DB Session)
FDConnection1.ConnectionDefName := 'MSSQL_Pool';FDConnection1.Connected := True;
FDQuery / FDUpdateSQL
with FDQuery1 dobeginConnection := FDConnection1;CachedUpdates := True;UpdateOptions.UpdateTableName := 'Table1';UpdateOptions.KeyFields := 'Field1,Field2';
UpdateOptions.UpdateMode := upWhereKeyOnly;
UpdateObject := Self.FDUpdateSQL1;
Close;SQL.Text :=' select a.*, b.Fiedl5 '+' from Table1 a '+' left join Table2 b on b.field1=a.field1 '+' where ... ';
Open;end;
ApplyUpdates
FDQuery1.CheckBrowseMode;FDQuery1.FetchNext; //抓資料到本地快取, 確保快取內容有提供回寫的資料FDQuery1.ApplyUpdates(-1);
取得別名欄位的表格屬性及原欄名稱,需設定連線參數 ExtendedMetadata=True
var column:TFDDatSColumn;column := FDQuery1.GetFieldColumn(Field);column.ActualOriginTabName // Field歸屬的Tablecolumn.ActualOriginColName // Field實體表格中的Column Name
FDConnection -> FDQuery,當FDQuery資料是分批讀取還沒完全將資料載入時,FDConnection沒辦法被其他FDQuery操作使用,會出現以下的錯誤訊息。
FDQuery.SourceEOF; //可以知道資料是否已完全載入
提供的建議做法是放二個FDConnection,一個做 Select...,另一個做Update/Insert/Delete/Exec ...
如果沒有閒置的 FDConnection, 就要Create一個FDConnection提供給FDQuery使用。
如果沒有閒置的 FDConnection, 就要Create一個FDConnection提供給FDQuery使用。

沒有留言:
張貼留言