チュートリアル:FireDAC を使用して SQLite データベースに接続する
データベースおよび LiveBinding のチュートリアル への移動
このチュートリアルでは、単純な Delphi マルチデバイス アプリケーションを使って、SQLite データベースへの接続を確立し簡単なクエリを実行する方法を説明します。
この例で使用しているデータベースは、C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db
にあり、Employee という 1 つのテーブルを含んでいます。
手順
- 次のいずれかを選択します。
- [ファイル|新規作成|マルチデバイス アプリケーション - Delphi]
- [ファイル|新規作成|マルチデバイス アプリケーション - C++Builder]
- フォームに以下のコンポーネントを追加します。
- 2 つの TButton コントロール。
- [オブジェクト インスペクタ]で、ボタンの Name プロパティを「
executeButton
」と「connectButton
」に、Text プロパティを「Execute
」と「Connect
」に、それぞれ設定します。
- [オブジェクト インスペクタ]で、ボタンの Name プロパティを「
- 1 つの TFDConnection コンポーネント。
- 1 つの TMemo コントロール。
- Name プロパティを「
outputMemo
」に設定します。
- Name プロパティを「
- 1 つの TFDPhysSQLiteDriverLink コンポーネント。SQLite ドライバをアプリケーションにリンクするためのものです。
executeButton
の Enabled プロパティを False に設定します。この時点で、フォームは次のようになっています。
- 2 つの TButton コントロール。
connectButton
の OnClick イベント ハンドラに以下のコードを追加します。- Delphi の場合:
procedure TForm3.connectButtonClick(Sender: TObject); begin outputMemo.Text := '';'' // データベース ファイルのパスを設定する // 'C:\Users\Public\Documents\...\Employees.s3db' を // 使用する SQLite データベース ファイルの絶対パスに書き換える FDConnection1.DriverName := 'SQLITE'; FDConnection1.Params.Values['Database'] := 'C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db'; try // 接続を確立する FDConnection1.Open; executeButton.Enabled := True; outputMemo.Lines.Add('Connection established!'); except on E: EDatabaseError do outputMemo.Lines.Add('Exception raised with message' + E.Message); end; end;
- C++Builder の場合:
void __fastcall TForm1::connectButtonClick(TObject *Sender) { outputMemo->Text = ""; // データベース ファイルのパスを設定する // 'C:\Users\Public\Documents\...\Employees.s3db' を // 使用する SQLite データベース ファイルの絶対パスに書き換える FDConnection1->DriverName = "SQLite"; FDConnection1->Params->Values["DataBase"] = "C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\14.0\\Samples\\Data\\Employees.s3db"; try { // 接続を確立する FDConnection1->Open(); executeButton->Enabled = true; outputMemo->Lines->Add("Connection established!"); } catch (Exception& E) { outputMemo->Text = "Exception raised with message" + E.Message; } }
executeButton
の OnClick イベント ハンドラに以下のコードを追加します。- Delphi の場合:
procedure TForm1.executeButtonClick(Sender: TObject); var query: TFDQuery; begin query := TFDQuery.Create(nil); try // SQL クエリを定義する query.Connection := FDConnection1; query.SQL.Text := 'SELECT * FROM Employee'; query.Open(); outputMemo.Text := '';'' // テーブルのフィールド名を追加する outputMemo.Lines.Add(String.Format('|%8s|%25s|%25s|', [' ID ', ' NAME ', ' DEPARTMENT '])); // テーブル内の各レコードを 1 つの行としてメモに追加する while not query.Eof do begin outputMemo.Lines.Add(String.Format('|%8d|%-25|%-25s|', [query.FieldByName('ID').AsInteger, query.FieldByName('Name').AsString, query.FieldByName('Department').AsString])); query.Next; end; finally query.Close; query.DisposeOf; end; end;
メモ: FireDAC.DApt ユニットを追加する必要があります。
- C++Builder の場合:
void __fastcall TForm1::executeButtonClick(TObject *Sender) { TFDQuery *query; query = new TFDQuery(NULL); __try { query->Connection = FDConnection1; // SQL クエリを定義する query->SQL->Text = "SELECT * FROM Employee"; query->Open(); outputMemo->Text = ""; // テーブルのフィールド名を追加する TVarRec args[3] = {"ID", "NAME", "DEPARTMENT"}; outputMemo->Lines->Add(System::UnicodeString::Format("|%8s |%25s |%25s |", args, ARRAYSIZE(args) - 1)); // テーブル内の各レコードを 1 つの行としてメモに追加する while (!query->Eof) { TVarRec arguments[3] = {query->FieldByName("ID")->AsInteger, query->FieldByName("Name")->AsString, query->FieldByName("Department")->AsString}; outputMemo->Lines->Add(System::UnicodeString::Format("|%8d |%-25s |%-25s |", arguments, ARRAYSIZE(arguments) - 1)); query->Next(); } } __finally { query->Close(); query->DisposeOf(); } }
メモ: #include <FireDAC.DApt.hpp> を追加する必要があります。
- 次のいずれかのコマンドを選択します。
- [実行|実行]
- [実行|デバッガを使わずに実行]
関連項目
- TFDPhysSQLiteDriverLink
- TDataSet.Eof
- System.SysUtils.Format
- FireDAC.Comp.Client.TFDConnection
- RAD Studio での SQLite のサポート
- チュートリアル:TSQLMonitor での SQLite データベースのサポート
- [オブジェクト インスペクタ]
サンプル
- FireDAC SQLite サンプル