我正在使用Synopse mORMot从Delphi 7访问SQLite数据库。我希望建立连接并直接通过SQL查询数据库,而无需使用mORMot的ORM(对象关系映射)功能。
您能否提供不依赖于mORMot的ORM功能而执行SQL查询的代码示例?
最佳答案
简而言之:最好通过SynDB.pas
类在SynSQLite3.pas
上使用SynDBSQLite3.pas
层,因为这将使您的代码将来可以与通过OleDB/ODBC甚至直接访问(例如对于Oracle)访问的任何数据库一起使用。
例如,使用变体保存列数据:
procedure Test(Props: TSQLDBConnectionProperties);
var Customer: Variant;
begin
with Props.Execute('select * from Customers where AccountNumber like ?',
['AW000001%'],@Customer) do
while Step do
assert(Copy(Customer.AccountNumber,1,8)='AW000001');
end;
var Props: TSQLDBConnectionProperties;
Props := TSQLDBSQLite3ConnectionProperties.Create('databasefile.db3','','','');
try
Test(Props);
finally
Props.Free;
end;
因此,对于您的问题,请阅读mORMot文档中与SynDB相关的部分以及所有related blog articles。这些类由ORM使用,但是您可以在没有ORM的情况下使用。
首先,在
TQuery
中有一个SynDB.pas
包装器,该包装器与SQLite3配合得很好,并允许“经典”代码级编程。但是,与这些单元之间没有100%的RAD直接访问。只是一些TClientDataSet“填充器”。这不是他们的目的:他们希望通过代码而不是通过UI管道快速,直接地访问数据库。