Sqlite under FireDAC [12] - Memorandum (hastily end of this topic).

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


Guess you like

Origin www.cnblogs.com/yjhb/p/11804285.html