AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
データベース【Delphiでデータベースを作る】
それでは Delphiでデータベースを作る事を考えます。Paradox/BDEでデータベースツールを作る場合には、「BDE」内のTTable やTQueryというコンポーネントや、簡単に表形式の表示をしたい場合には「DataAccess」内のTDataSource と「Data Controls」内のTDBGrid 等を利用したりしていましたが、Paradox/BDEでのデータベースというのは単なるフォルダで、各テーブルファイルをその中に作成し、各テーブルファイルへのアクセスするというものでした。
 
Firebird や Interbase では、逆に、データベースファイルというものがあって、各テーブルはその中に組み込まれ、各テーブルはファイルとして見る事は出来ません。まず最初は、データベースを作成する、という所からスタートします。
 
データベースのアクセスにはその他に、ADOを使うパターン、dbExpressを使うパターン、等もありますが、ここでは「InterBase」内のコンポーネントを使います。これを使うのが便利で早いと思います。Firebird もこのコンポーネントで扱う事が可能です。
 
恒例のように以後は Borland Delphi6Jを使ったプログラミングを行います。他のバージョンをお使いの場合には適時読み替えて下さい。
 
プログラムは「C:\DelphiProgram\db」というフォルダを作成し、その中で更にプロジェクト毎にフォルダを作成して、その中でプログラムを作成します。
 
まずは、プロジェクト「d001」の準備を行います。「C:\DelphiProgram\jww」フォルダの中に「d001」というフォルダを作成し、Delphi6を起動します。メニュー「プロジェクト」→「オプション」を実行し、下記の設定を行います。
[アプリケーション]頁
 タイトル
d001−データベース作成
[ディレクトリ/条件]頁
 パス及びディレクトリ
C:\DelphiProgram\db\d001

メニュー「ファイル」→「名前を付けて保存」
「C:\DelphiProgram\db\d001」の中に「Unit1.pas」を保存
メニュー「ファイル」→「プロジェクトに名前を付けて保存」
「C:\DelphiProgram\db\d001」の中に「d001.dpr」として保存

Form1の画面は、大きさを扱いやすいよう小さくし、オブジェクトインスペクタで Form1 のプロパティを設定します。
BorderIcons
 biMaximize
False最大化しないように
BorderStylebsSingle画面をリサイズしないように
Captionデータベース作成タイトルバーに表示されます
ColorclWhite画面色 御自由にどうぞ
Font内
 Name
MS ゴシック プロポーショナルフォントは
文字配置調整が微妙なので
Font内
 Size
10小さいと少し見難い為
ScaledFalse 動作環境によっての文字の
大きさ変動を少し抑えられる

メニュー「表示」→「プロジェクトマネージャ」
を実行し、コード画面の左側にドッキングさせておきます。


まず最初は、いきなりSQLではなくスタンドアロン的に、TIBTable と TDBGridを使う方法について簡単に書いておきます。C/S型で使う事はほとんどありませんが…
 
フォーム上に、[InterBase]内の「IBDatabase」「IBTransaction」「IBTable」を配置し、「Data Access」内の「DataSource」と「Data Controls」内の「DBGrid」を配置します。また、実行する際のボタンを1つ配置します。画面のレイアウトは下記のような感じです。

オブジェクトインスペクタでそれぞれプロパティを指定します。
「IBDatabase1」
DefaultTransactionIBTransaction1
LoginPromptFalse

「IBTransaction1」
DefaultDatabaseIBDatabase1

「IBTable1」
CachedUpdatesTrue
DatabaseIBDatabase1
TransactionIBTransaction1

「DataSource1」
DataSetIBTable1

「DBGrid1」
DataSourceDataSource1

「Button1」
Captionゴー!(&G)

 
それでは「Button1」をダブルクリックし、プログラムコードを入力します。(下記で全角空白を使っていますが実際は半角空白です)
// 開始
procedure TForm1.Button1Click(Sender: TObject);
var
 AppPath : string ;
begin
 AppPath := ExtractFilePath(Application.ExeName);
 
 if (IBTable1.Active) then
  IBDatabase1.ApplyUpdates([IBTable1]);
 
 IBTable1.Active := False ;
 IBTransaction1.Active := False ;
 IBDatabase1.Connected := False ;
 
 // データベース作成
 IBDataBase1.DatabaseName := AppPath + 'TEST.FDB' ;
 IBDatabase1.Params.Clear ;
 IBDatabase1.Params.Add('USER "SYSDBA"');
 IBDatabase1.Params.Add('PASSWORD "masterkey"');
 IBDatabase1.Params.Add('PAGE_SIZE 4096');
 try
  IBDataBase1.CreateDatabase;
 except
  // 既に作成済み
 end;
 
 // データベース接続
 IBDataBase1.DatabaseName := AppPath + 'TEST.FDB' ;
 IBDataBase1.Connected := False ;
 IBDatabase1.Params.Clear ;
 IBDatabase1.Params.Add('USER_NAME=SYSDBA');
 IBDatabase1.Params.Add('PASSWORD=masterkey');
 IBDatabase1.Connected := True ;
 IBTransaction1.Active := True ;
 
 // テーブル作成
 try
  with IBTable1 do begin
   TableName := 'TEST' ;
   if not(IBTable1.Exists) then begin
    StoreDefs := True ;
    // テーブルの項目
    with FieldDefs do begin
     Clear;
     with AddFieldDef do begin
      Name := 'N';
      DataType := ftInteger ;
      Required :=True;
     end;
     with AddFieldDef do begin
      Name := 'MOJIDATA';
      DataType := ftString ;
      Size := 20 ;
     end;
    end;
    // インデックス
    with IndexDefs do begin
     Clear;
     with AddIndexDef do begin
      Name := 'INDEX1';
      Fields := 'N';
     end;
    end;
    //
    CreateTable;
   end;
  end;
 except
  ;
 end;
 IBTable1.StoreDefs := False ;
 IBDatabase1.Connected := False ;
 
 // 接続
 IBDatabase1.Connected := True ;
 IBTransaction1.Active := True ;
 IBTable1.Active := True ;
end;
終了時、つまり、フォームのCloseイベントでデータベースを切断するようにします。
// 終了時
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if (IBTable1.Active) then
  IBDatabase1.ApplyUpdates([IBTable1]);
 
 IBTable1.Active := False ;
 IBTransaction1.Active := False ;
 IBDatabase1.Connected := False ;
end;

実行をすると、データベース「TEST.FDB」をプログラムと同じフォルダに作成します。そして作成されたデータベースに接続を行い、テーブル「TEST」を作成します。内容は
N整数
MOJIDATA文字(半角20文字)
です。
DBGridにその表形式で表示されますので、実際に入力出来ることが分かると思います。終了時またはボタンクリック時に「ApplyUpdates」で書き込んだ内容をデータベースに適用し、内容を保存しています。
 

C/S型データベースで TIBTable を使ったプログラムを作成する事はほとんど無いですが、Firebirdをスタンドアロンとして利用する事も出来ますし、安直に作りたい場合もあるでしょうから簡単にざっと書いてみました。まずは、こういうイメージ、という感じを掴んでもらえればと思います。


 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
シェアウェア
Script!World
データベース
 A B C D
 E F G H
 I J K L
 M N O P
 Q R S T
 U V W X
 Y Z
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.