Continues to extend the main topic is the SQL syntax, the reason miserably is now the brains IntraWeb has entered the world.
Related notes will be added at any time in the following:
//连接多个数据库的参考代码: FDConnection1.ExecSQL('ATTACH ''c:\hr.sdb'' AS hr'); FDConnection1.ExecSQL('ATTACH ''c:\cust.sdb'' AS cust'); FDQuery1.Open('select * from "Orders" o ' + 'left join hr."Employees" e on o.EmployeeID = e.EmployeeID ' + 'left join cust."Customers" c on o.CustomerID = c.CustomerID'); //SQLite_OnAuthorize 参考代码: procedure TForm1.FormCreate(Sender: TObject); begin FDConnection1.Connected := True; TSQLiteDatabase(FDConnection1.ConnectionIntf.CliObj).OnAutorize := DoAuthorize; FDQuery1.Open; end; procedure TForm1.DoAuthorize(ADB: TSQLiteDatabase; ACode: Integer; const AArg1, AArg2, AArg3, AArg4: String; var AResult: Integer); begin Memo1.Lines.Add(Format('%d - %s - %s - %s - %s', [ACode, AArg1, AArg2, AArg3, AArg4])); if ACode = SQLITE_DELETE then AResult := SQLITE_DENY else AResult := SQLITE_OK; end; //SQLite_OnUpdate 参考代码: procedure TForm1.FormCreate(Sender: TObject); begin FDConnection1.Connected := True; TSQLiteDatabase(FDConnection1.ConnectionIntf.CliObj).OnUpdate := DoUpdate; FDQuery1.Open; end; procedure TForm1.DoUpdate(ADB: TSQLiteDatabase; AOper: Integer; const ADatabase, ATable: String; ARowid: sqlite3_int64); begin Memo1.Lines.Add(Format('%d - %s - %s - %u', [AOper, ADatabase, ATable, ARowid])); end; //快速选择到行: SELECT * FROM Orders WHERE ROWID = :RID //TFDMemTable 代替 TClientDataSet procedure TForm1.FormCreate(Sender: TObject); begin with FDMemTable1.FieldDefs.AddFieldDef do begin Name := 'word'; DataType := ftString; Size := 50; end; with FDMemTable1.FieldDefs.AddFieldDef do begin Name := 'ph'; DataType := ftString; Size := 50; end; with FDMemTable1.FieldDefs.AddFieldDef do begin Name := 'note'; DataType := ftString; Size := 255; end; with FDMemTable1.FieldDefs.AddFieldDef do begin Name := 'num'; DataType := ftInteger; end; FDMemTable1.IndexDefs.Add ( 'INDEX_1', 'Word' , [ixPrimary]); FDMemTable1.CreateDataSet; End ; // concurrent correlation: http://docwiki.embarcadero.com/RADStudio/XE6/en/Using_SQLite_with_FireDAC#Locking_and_Concurrent_Updates