Revision 3 of 3, by WikiArchive on 11-10-2026. The page as it is now.
SQLdb Tutorial1/ja
データベースのポータル
参照: · Databases 概要 · ライブラリ · フィールドの型 · コントロール · FAQ · SqlDBHowto/ja · TSQLQuery の利用 · メモリ上で動作するデータベースの作り方 · チュートリアル/練習となる記事: · 概要 · 0 - データベースのセットアップ · 1 - 開始 · 2 - 編集 · 3 - クエリ · 4 - データモジュール · SQLdb Programming Reference/ja · 各種データベース · Advantage - MySQL - MSSQL - Postgres - Interbase - Firebird - Oracle - ODBC - Paradox - SQLite - dBASE - MS Access - Zeos
DBGrid のプロパティ「Options」→「dgDisplayMemoText」を「(True)」に変更する。 それ以外の場合は、すべてのデータ フィールドに (MEMO) が表示される。
表示するデータの選択
接続は成功したが、データが表示されなかった。 理由は簡単である。 どのデータを返すかをデータベース サーバに伝えていない。employee.fdb データベースにはいくつかのテーブルが含まれており、確認したいテーブルを Firebird に伝えていない。 データベースの構造がわからない場合は、FlameRobin などのツールを使用して内容を表示できる。 Lazarus はそのようなツール、DataDesktop も提供する。 これは、Lazarus の /tools/lazdatadesktop/ サブディレクトリにある。 プロジェクトを保存し、プロジェクト lazdatadesktop.lpi を開いてコンパイルする。
DataDesktopが起動したときの様子
例に戻る。
テーブル「CUSTOMER」のすべてのデータを表示したいと考えている。 そのための SQL 命令は次のとおりである。
select * from CUSTOMERこのコマンドを SQLQuery1 の 'SQL' プロパティに割り当てる必要がある。 私たちのプロジェクトのソースコードでは、これは次のようになる。
SQLQuery1.SQL.Text := 'select * from CUSTOMER';SQL 命令は一重引用符で囲む必要がある。 別のコンポーネント (Edit1.Text など) のコンテンツを割り当てることもできる。 これは必ずしも良い考えとは限らない。 SQL インジェクションの詳細については、Secure programming (より高度なテキスト) を参照のこと。
フォームの「標準」タブから「TButton」を追加する。 ユーザーがボタンをクリックすると、データの取得が開始される。 Caption プロパティを「Button1」から「Show data」に変更する。
これにはコードが必要になる。 Button1 をダブルクリックする。 次に、Lazarusは必要な手順の骨格を作成する。 ソースコードには次の行があるはずだ。
procedure TForm1.Button1Click(Sender: TObject);
begin
end;「begin」と「end」の間に、データを表示するために必要な命令を入力する必要がある。明らかに、これは SQLQuery1 と関係がある。
SQLQuery1 の 'SQL' プロパティは、SQLQuery1 がアクティブでない場合にのみ変更できる。 そのため、最初にコンポーネントを閉じる。
SQLQuery1.Close;次に、SQL 命令を「SQL」プロパティに割り当て、以前の SQL コマンドを上書きする。
SQLQuery1.SQL.Text := 'select * from CUSTOMER';次に、データベースへの接続を確立し、トランザクションをアクティブにしてクエリを開く必要がある。
DBConnection.Connected := True;
SQLTransaction1.Active := True;
SQLQuery1.Open;最初の 2 つの命令は 3 番目の命令によって自動的に実行されるため、省略できる。 この時点でプロジェクトをコンパイルすると、CUSTOMER」テーブルのデータがすでに表示されているはずだ。
ただし、本格的なアプリケーションでは、開いているすべてのデータベース接続が不要になったときに適切に閉じられるようにする必要がある。 そうでなければ、2次的な影響は予測できない。そこで、フォームの OnClose イベントを使用する (オブジェクトインスペクタでダブルクリックして作成する)。
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
end;接続を閉じるには、開始コードとは逆の順序を使用する。
SQLQuery1.Close;
SQLTransaction1.Active := False;
DBConnection.Connected := False;DBConnection.Connected を False に設定すると、トランザクションとクエリは自動的に閉じられるため、手動で閉じる必要はない。
要約
ここまで、SQLdb パッケージを使用してデータベースに接続する方法と、テーブルの内容を画面に表示する方法を学習した。 編集などの機能をさらに追加したい場合は、SQLdb チュートリアル 2 に進まれたい。
前の手順に従った場合、コードは次のようになる:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, IBConnection, sqldb, db, FileUtil, Forms, Controls,
Graphics, Dialogs, DBGrids, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Datasource1: TDatasource;
DBGrid1: TDBGrid;
DBConnection: TIBConnection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
SQLQuery1.Close;
SQLQuery1.SQL.Text:= 'select * from CUSTOMER';
DBConnection.Connected:= True;
SQLTransaction1.Active:= True;
SQLQuery1.Open;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
SQLQuery1.Close;
SQLTransaction1.Active:= False;
DBConnection.Connected:= False;
end;
end.関連情報
- SQLdb Tutorial0/ja: チュートリアルに用いるサンプルの表/データを設定する方法を説明します。
- SQLdb Tutorial1/ja: DB チュートリアルの第一の部分。データベースのデータを、どのように grid に表示させるかを学びます。
- SQLdb Tutorial2/ja: DB チュートリアルの第二の部分。データベースのデータの挿入や編集について学びます。
- SQLdb Tutorial3/ja: DB チュートリアルの第三の部分。複数のデータベースについてのプログラムやログインフォームの使い方を学びます。
- SQLdb Tutorial4/ja: DB チュートリアルの第四の部分。どのようにデータモジュールを用いるかを学びます。
- Lazarus Database Overview/ja: Lazarus がサポートしているデータベースについての情報。 データベースごとの記述へのリンクを含みます。
- SQLdb Package/ja: SQLdb パッケージについての情報
- SQLdb Programming Reference/ja: SQLdb データベースコンポーネントの入出力の概要
- SqlDBHowto/ja: SQLdb パッケージを用いることについての情報
- Working With TSQLQuery/ja: TSQLQuery についての情報
From the Free Pascal wiki, page "SQLdb Tutorial1/ja", as the Internet Archive kept it on 2025-01-13, last changed on 2024-09-23. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

