5

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

您能否提供不依赖 mORMot 的 ORM 功能来执行 SQL 查询的代码示例?

4

1 回答 1

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;

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

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

但是这些单元并没有 100% RAD 直接访问。只是一些 TClientDataSet “填充物”。这不是他们的目的:他们希望通过代码而不是通过 UI 管道快速直接地访问数据库。

于 2012-10-14T23:28:28.180 回答