第2回 Kylixからデータベースを操作してみよう
中林 紀彦
日本アイ・ビー・エム株式会社
2003/1/15
データ操作プログラミング手法
次は、それぞれのデータセットについて検索(SELECT)、更新(UPDATE)、挿入(INSERT)、削除(DELETE)の操作方法を説明します。
■単方向データセットによるデータ操作
dbExpressには次の4種類の単方向データセット・コンポーネントが用意されています。
TSQLDataSet | :SQL文とテーブル、ストアドプロシージャの指定が可能 | |
TSQLQuery | :SQL文の指定が可能 | |
TSQLTable | :テーブルの指定が可能 | |
TSQLStoredProc | :ストアドプロシージャの実行が可能 |
最も一般的なのはTSQLDataSetコンポーネントで、単方向データセットは通常このコンポーネントを利用します。TSQLDataSetはSQL文、テーブル、ストアドプロシージャを扱うことができ、ほかの3つのコンポーネントの機能をすべて満たしています。
実際にアプリケーションを作りながら、TSQLDataSetの利用方法を見ていきましょう。
まず、[ファイル]−[新規作成]−[アプリケーション]で新しいアプリケーションを準備します。フォーム上にSQLConnectionコンポーネントを配置し、このコンポーネントをダブルクリックしてdbExpressの接続設定を行います。ここでは、SAMPLEデータベースに接続するように設定します(画面1)。
画面1 dbExpressの接続設定 |
次に、SQLDataSetをフォームに配置します。SQLConnectionのプロパティを「SQLConnection1」に設定します。次に[Standard]タブからMemoとButtonコンポーネントを配置します。Memo1のLinesプロパティでTStringから「Memo1」を削除します。また、Button1のCaptionプロパティを「O.K.」に変更し、大きさや全体の位置を調整します(画面2)。
画面2 コンポーネントの配置 |
[O.K.]ボタンをダブルクリックして、クリック時のイベントを記述します。最初にSQLを準備()し、次にデータセットをアクティブにしてデータを取り出します。まずは、メタデータを取り出してみましょう()。ここまでのコードは、以下のようになります。
procedure TForm1.Button1Click(Sender: TObject); |
[実行]ボタンで実行して[O.K.]ボタンをクリックすると、画面3のように表示されるはずです。
画面3 データベースからフィールド名が取得できた |
次にデータを取り出してみましょう。前述のコードに()の部分を加えます。
procedure TForm1.Button1Click(Sender: TObject); |
これを実行すると、画面4のように表示されます。
画面4 各レコードの値まで取得できるようになった |
以上が、検索操作の方法です。
次に、結果を返さない更新(UPDATE)、挿入(INSERT)、削除(DELETE)について説明します。基本的には検索(SELECT)のときと同じですが、ExecSQLメソッドを使ってSQLを実行します。ここではデータの挿入(INSERT)を例として試してみましょう。先ほどのイベントのコードを以下のように書き換えます()。
procedure TForm1.Button1Click(Sender: TObject); |
ExecSQLは影響を受けた行数を整数で返すので、「1」が表示されればINSERT成功です。UPDATEやDELETEも、同じようにExecSQLで実行できます。
■クライアントデータセットによるデータ操作
Kylixでは、TClientDataSetとTSQLClientDataSetの2種類のクライアントデータセットが提供されています。TSQLClientDataSetは、2階層アプリケーション用の特別なクライアントデータセットです。一方、TClientDataSetはプロバイダコンポーネントを併用することで多層のアプリケーションにも対応できます。クライアントデータセットは、TDataSetのプロパティ、メソッドのすべてを継承しています。そのため、INSERT、DELETEに関しては単方向データセットのデータ操作と同様です。
UPDATEに関しては少し注意が必要なので、サンプルを作りながら説明します。
先ほどと同じように、[ファイル]−[新規作成]−[アプリケーション]で新しいアプリケーションを準備します。フォームにSQLConnectionコンポーネントを配置し、コンポーネントをダブルクリックしてdbExpressの接続の設定をします。ここでもSAMPLEデータベースに接続するように設定しておきます。
次に、SQLClientDataSetをフォームに配置してDBConnectionプロパティを「SQLConnection1」に設定し、Connectedプロパティを「true」に設定します。[Data Access]タブからDataSourceをフォームに配置し、DataSetプロパティを「SQLClientDataSet1」、Activeプロパティを「true」にします。[Data Controls]タブからDBGridを配置してDataSourceプロパティを「DataSource1」とし、[Standard]タブからButtonを配置してCaptionプロパティを「O.K.」に変更し、大きさや配置を画面5のように調整します。
画面5 テーブルデータの表示 |
ここで一度実行してみましょう。
データベースへのログインプロンプトが表示されるので、パスワードを入力します。すると、画面5のようにDBGridにEMPLOYEEテーブルのデータが表示されます。
DBGridのデータは編集可能になっているので、試しに変更してみてください。しかし、アプリケーションを再実行してみると変更が反映されていないことに気付くはずです。これは、クライアントデータセットがメモリ内に保持するデータはアプリケーションの終了とともに消えてしまうからです。
そこで、アプリケーションを終了する前にApplyUpdatesメソッドを実行し、更新内容をデータベースに反映させる処理を加えます。[O.K.]ボタンをダブルクリックして、イベントを記述します()。
procedure TForm1.Button1Click(Sender: TObject); |
アプリケーションを実行し、データを変更して[O.K.]ボタンをクリックします。アプリケーションを再実行すると、今度は変更が反映されていることが分かるでしょう。
クライアントデータセットは、DBGridなどを使ってデータを容易に変更できます。ただし、アプリケーションがデータをメモリ内に保持するため、元のデータとの不整合が起こる可能性が高くなります。Webアプリケーションなどで使用する場合は注意が必要です。
2/4
|
|
||||||||
|
連載 Kylix 3とDB2で作るWebサービス・アプリ |
Linux Squareフォーラム プログラミング関連記事 |
特集:オブジェクト指向に生まれ変わるPHP5[前編] 現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか? |
|
特集:Windows開発者に贈る
Kylixの全貌 注目の開発環境「Borland Kylix」がいよいよ見えてきた。ここに、英語版の発売を目前に控えたKylixの機能やアーキテクチャを紹介しよう |
|
特集:Kylixプログラミング作法 GUIの構築やコンポーネントとコードの関係、 Object Pascalの仕様など。 これらの点を、実際に日本語ベータ版でプログラミングしながら分かりやすく解説 |
|
連載:PHP4で作るWeb-DBシステム(全5回) PHPはWebサーバとデータベースを結びつけるものだ。そのためPHPでの開発を開始するには、OS、データベース、Webサーバ、そしてPHPと、多くのソフトウェアのインストールを行う必要がある |
|
連載:ステップ・バイ・ステップ・シェルスクリプト(全7回) Linuxの中でシェルスクリプトはネットワークの設定、デーモンの起動など重要な役割を果たしている。この連載では、シェルスクリプトで実用的なプログラムを組むことを目標にして、シェルの基本的な知識を説明する |
|
連載:Kylix
3とDB2で作るWebサービス・アプリ(全5回) Kylix 3とDB2 V8.1を使って、Webサービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|