FireDAC 下的 Sqlite [12]

来源:互联网 时间:1970-01-01


该话题的继续延伸主要就是 SQL 的语法了, 草草收场的原因是现在的脑筋已经进入了 IntraWeb 的世界.



相关备忘会随时补充在下面:



//连接多个数据库的参考代码:

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;

//并发相关: http://docwiki.embarcadero.com/RADStudio/XE6/en/Using_SQLite_with_FireDAC#Locking_and_Concurrent_Updates




相关阅读:
Top