mORMot中的示例SQL查询

use*_*626 5 database delphi sqlite delphi-7 mormot

我正在使用Synopse mORMot从Delphi 7访问SQLite数据库.我希望通过SQL直接建立连接和查询数据库,而无需使用mORMot的ORM(对象关系映射)功能.

您是否可以提供执行SQL查询而不依赖于mORMot的ORM功能的代码示例?

Arn*_*hez 7

简而言之:最好通过其类使用SynDB.pas层,因为它将允许您的代码在将来可以通过OleDB/ODBC访问任何数据库,甚至可以直接访问(例如,用于Oracle).SynSQLite3.pasSynDBSQLite3.pas

例如,使用变量来保存列数据:

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;
Run Code Online (Sandbox Code Playgroud)

因此,对于您的问题,请阅读mORMot文档中与SynDB相关的部分以及所有相关的博客文章.这些类由ORM使用,但您可以使用没有ORM的类.

首先,有一个TQuery包装器SynDB.pas可以很好地与SQLite3配合使用,并允许"经典"的代码级编程.

但是这些单位没有100%的RAD直接访问权限.只是一些TClientDataSet"填充程序".这不是他们的目的:他们希望在代码中快速直接访问数据库,而不是通过UI管道.