5

Synopse mORMotを使用して、Delphi 7 から SQLite データベースにアクセスしています。接続を確立し、mORMot の ORM (オブジェクト リレーショナル マッピング) 機能を使用せずに、SQL 経由で直接データベースにクエリを実行したいと考えています。

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 なしでそれらを使用できます。

まず、SQLite3 と非常にうまく連携し、「古典的な」コードレベルのプログラミングを可能にするTQueryラッパーがあります。SynDB.pas

しかし、これらのユニットで 100% RAD に直接アクセスできるわけではありません。ほんの一部の TClientDataSet の「フィラー」です。これは彼らの目的ではありませんでした。彼らは、UI 配管ではなく、コードで DB に高速かつ直接アクセスしたいと考えていました。

于 2012-10-14T23:28:28.180 に答える