次のページ 前のページ 目次へ

4. テストデータベースの実行

システムインストール終了後、モデルアプリケーションを実行することができます。 インストールしたmsqlのバージョンやperlデータベースインターフェースに依存し し、サンプルプログラムを2〜3修正しなければいけません。

まず/home/httpd/html/にあるindex.htmlファイルがサンプルデータ ベースアプリケーションを呼び出すように修正します。/home/httpd/html/test/のデータベース(アーカイブ名はperl.lst.ckですが、database.cgi あるいはinventur.cgiと呼びます)に置き換えます。

index.htmlに一行を追加します(もちろん各自のインストールに合わせて下さい)。


<LI>Test the <A HREF="test/database.cgi">Database, DBI:DBD-mSQL style!</A>
<LI>Test the <A HREF="test/inventur.cgi">Database, MsqlPerl style!</A>

通常はこの2つのうちから一つを選択するのですが、もし両方ともインストール している場合は上のように2行を追加することもできます。2つを使えれば パフォーマンスなどを比較することもできます。

4.1 MsqlPerlサンプルスクリプトの追加

サンプルスクリプトはMsqlPerlインターフェースを使うようにします。 そのために適当な箇所を書き換えます。はじめにファイルのはじめあたりのuse 指定を変更します。


#
# use DBI;            # Generisches Datenbank-Interface 
use Msql;

そして27行付近でMsqlPerl syntaxが特定のドライバを必要としないようにします。
# $dbh = DBI->connect($host, $database, '', $driver) ||
$dbh = Msql->connect($host, $database) ||

また33行から最後までdoqueryに変更します。
# $dbh->do("SELECT * FROM hw") || db_init($dbh);
$dbh->query("SELECT * FROM hw") || db_init($dbh);

最後に、207行をコメントアウトします。
# $sth->execute || msg("SQL Error:", $sth->errstr);

またerrmsgに対する前のコードフラグメントの一つのように全errstrコール をスワップする必要があります。これはバージョンに依存するものです。 以上の作業が終了したらスクリプトはスムーズに実行されます。

4.2 msql-2用サンプルスクリプトの追加

SQL syntaxはmslq-2の開発中に再定義されました。オリジナルスクリプトは 45〜58行にテーブル初期化ステートメントを実行することはできません。 primary key modifierはmsql-2ではもうサポートされていません。 以下をスキップします:


    $dbh->do(<<EOT) || die $dbh->errstr; # Neue Personen-Tabelle 新規個人テーブル
        create table person (
# We do not need the 'primary key' modifier anymore in msql-2!
#           pn        int primary key,   # Personalnummer個人番号
            pn        int,               # Personalnummer
            name      char(80),          # Nachname, Vorname 姓、名
            raum      int                # Raumnummer空間番号
        )
EOT
    $dbh->do(<<EOT) || die $dbh->errstr; # Neue Hardware-Tabelle
        create table hw (
# We do not need the 'primary key' modifier anymore in msql-2!
#           asset int primary key,       # Inventurnummer 管理番号
            asset int,                   # Inventurnummer
            name   char(80),             # Bezeichnung 名称
            person int                   # Besitzer   所有者
        )
EOT

このスクリプトは個人番号が同じものも新しくエントリーしてしまいます。 msql-1はprimary keyをこの動作を防ぐのに使います。msql-2ドキュメント はCREATE INDEXが唯一のエントリ発行を閉じる方法について書かれています。


次のページ 前のページ 目次へ