FireDAC のインメモリデータベースを簡単に使うためのユニットを作ってみました。
# 2009 以降で動作します。TFD~ / TAD~ いずれでも動作すると思います。
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, uInMemTableUtils;
type TForm1 = class(TForm) DBGrid1: TDBGrid; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private 宣言 } InMemTable: TInMemoryTable; public { Public 宣言 } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin // インメモリテーブルの準備 InMemTable := TInMemoryTable.Create(Self); // メモリーテーブルを登録 InMemTable.AddDataSet(0, 'TEST'); // テーブル名は 'TEST' // メモリーテーブルの準備 with InMemTable.MemTables[0] do begin FieldDefs.Add('ID' , ftInteger , 0, False); FieldDefs.Add('Name', ftWideString, 20, False); CreateDataSet; end; // 接続 InMemTable.Connect; // DBGrid にデータソースを設定 DBGrid1.DataSource := InMemTable.DataSources[0]; // DataSources[0] は Queries[0] のデータソース // 選択クエリーを実行 with InMemTable.Queries[0] do begin SQL.Clear; SQL.Add('SELECT * From TEST'); Open; end; end;
procedure TForm1.Button2Click(Sender: TObject); begin // 挿入クエリーを実行 with InMemTable.Queries[1] do begin SQL.Clear; SQL.Add('INSERT INTO TEST (ID, NAME) VALUES (1, "ABC")'); ExecSQL; end; // 表示用のクエリーを更新 InMemTable.Queries[0].Refresh; end;
end.
こんな感じで使えます。
Download: http://ht-deko.minim.ne.jp/software/uInMemTableUtils_100.zip
このユニットはハラヘッタウェアとなっています。
http://ht-deko.minim.ne.jp/delphiforum/harahettaware/
|