Synopse mORMotを使用して、Delphi 7 から SQLite データベースにアクセスしています。接続を確立し、mORMot の ORM (オブジェクト リレーショナル マッピング) 機能を使用せずに、SQL 経由で直接データベースにクエリを実行したいと考えています。
mORMot の ORM 機能に依存せずに SQL クエリを実行するコード例を教えてください。
要するに、クラスを介してSynDB.pas
レイヤーを使用することをお勧めします。これにより、コードが将来、OleDB / ODBCまたは直接アクセス(Oracleなど)を介してアクセスできるデータベースで動作できるようになるためです。SynSQLite3.pas
SynDBSQLite3.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 に高速かつ直接アクセスしたいと考えていました。