SQLdb Tutorial4/ja

From Free Pascal wiki
Jump to navigationJump to search

English (en) français (fr) 日本語 (ja)

データベースのポータル

参照:

チュートリアル/練習となる記事:

各種データベース

Advantage - MySQL - MSSQL - Postgres - Interbase - Firebird - Oracle - ODBC - Paradox - SQLite - dBASE - MS Access - Zeos

概要

このチュートリアルは、Lazarus Data Modules を使用して、プロジェクトのデータ アクセス コンポーネントを、アクセスに関連付けられたプログラム ロジックから分離する方法をデモンストレーションすることを試みる。 このような分離により、プログラムのメンテナンスとデバッグが容易となる。

このチュートリアルは、Windows 7 と SQLite3 をデータベースとして使用し、Lazarus 1.0.8 と FPC 2.6.2 を使用して開発された。 ただし、以前のバージョンでも動作するはずである。 同様に、他の DBMS およびオペレーティング システムも、必要な場合は最小限の変更が必要である。

なぜデータモジュールを用いるのか?

以下のチュートリアルの後では簡単である:

'本物' のアプリケーションを開発することはより困難である。 'Form1' は異なるイベントとデータベースクエリを扱うことで指数的に大きくなる。

各テーブルへのアクセスを単一のデータモジュールに分離すると、デバッグとメンテナンスが非常に簡単になる。

 アプリケーションは多くのデータモジュールを持つかもしれない - テーブルが 1 つまたは 2 つしかない小規模なアプリケーションは、おそらく 1 つのデータモジュールだけで十分だ - より大きなアプリケーションはそれぞれのテーブルもしくはビューに対してデータモジュールを持つことで恩恵を受けるかもしれない。

ここに示すサンプルでは、単純なクエリを含む 2 つのテーブルのみを使用してるが、各テーブルにさらに多くのオプションを含めるように拡張できる。

始めてみる

Lazarus IDEで、新しいアプリケーションを作り、次いで、ファイル --> 新規 --> データモジュールをクリックする。

newDM.jpg

'New Form'を選択した場合、新しいウインドウが開く:

dm1.jpg

その差は、このウインドウ/フォームが見ることのできないコンポーネントのみを配置できる点である。 実際には、コンポーネントパレットを見ると、見ることのできないコンポーネントのみが選択可能なようにその数が減っている。

皆 それぞれの仕方を持っている

データ モジュールの使用方法は、必要に応じて異なる。 ただし、例として、少なくとも 2 つのデータ モジュールがあるとする:

Unit: DataModule1 このモジュールに T*ConnectionTSQLTransaction を配置する。

conn.jpg

DataModule1 はすべてのクエリに対するコネクションとして用いられる。

そこでそれぞれのテーブル、もしくはビューに対して DataModuleN を作る。

dm2.jpg

それぞれの DataModuleN はデータベースに接続するためUSES節にDataModule1(この例ではunit2)と記述することが必要である。

ここからは SQLdb Tutorial1/ja と同じである。コンポーネントは同様のやり方で、同一のアクセスで接続される。

データモジュールのさらなる用途

Additional コンポーネント

この例では、DataModule1はConnectionとTransactionを持つだけであるが、「現実」のアプリケーションでは、このコンポーネントはアプリケーションによって用いられる、見ることのできないコンポーネントも持つのが普通である。

例えば、INI設定を開いて、保存するTOpenDialogTSaveDialogなどである。ここで念頭に置いているのは、アプリケーションの固有の機能とデータアクセスを切り離すことである。アプリケーションにとってデータソースの変更は、決して小さな仕事ではないが、データソースと切り離すことは変更をより簡単にするだろう。

デバッグ

また、プログラムをデバッグすることは困難なことである。データアクセスと、仕事のためのロジックを切り離すことで、少なくとも問題を半減するまで独立してテストすることができる。

DataModule の重要性は同じデータベースとテーブルを用いた他のアプリケーションを開発するときにより明らかとなる。もちろんデータモジュールは新しいアプリケーションでも利用可能である。