Avanti Indietro Indice

4. Esecuzione di un database di esempio

Dopo il completamento dell'installazione del sistema si può finalmente eseguire una modello di applicazione. A seconda della versione di msql installata e dell'interfaccia perl utilizzata si dovrà modificare il programma di esempio in qualche punto.

Innanzitutto, il file index.html posto in /home/httpd/html/ deve essere modificato per permettere di richiamare l'applicazione database campione. È possibile porre il database (che verrà chiamato database.cgi o inventur.cgi nonostante il nome del file perl.lst.ck) nella directory /home/httpd/html/test/.

Per ottenere lo scopo, appendere una linea (naturalmente dipendente dalle scelte di installazione) simile alla seguente nel file 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>

Solitamente si dovrebbe mantenere una sola di queste due scelte, ma disponendo di entrambi i tipi di interfaccia database installata è possibile lasciare entrambe le linee così come sono. Sarà in seguito possibile comparare le prestazioni, ecc.

4.1 Adattamento dello script di esempio per MsqlPerl

Allo script campione deve essere notificato l'uso dell'interfaccia MsqlPerl. Le modifiche intervengono in diversi punti. Dapprima, vicino all'inizio del file, rimpiazzare la clausola use:


#
# use DBI;            # Interfaccia Database Generica
use Msql;

Poi, alla linea 27, la sintassi MsqlPerl non richiede la menzione di un driver specifico:


# $dbh = DBI->connect($host, $database, '', $driver) ||
$dbh = Msql->connect($host, $database) ||

Poi, dalla linea 33 per tutto l'intero script, bisogna modificare tutte le istanze di do con query:


# $dbh->do("SELECT * FROM hw") || db_init($dbh);
$dbh->query("SELECT * FROM hw") || db_init($dbh);

Infine, la linea 207 deve essere commentata:


# $sth->execute || msg("SQL Error:", $sth->errstr);

Inoltre, può diventare necessario scambiare tutte le chiamate errstr come quella nel precedente frammento di codice con errmsg. Anche questa scelta dipende dalla versione.

Dopo queste modifiche, lo script dovrebbe girare senza intoppi.

4.2 Adattamento dello script di esempio per for msql-2

La sintassi SQL è stata ridefinita durante lo sviluppo di msql-2. Lo script originale fallirà l'esecuzione delle istruzioni di inizializzazione tabella nelle linee 45 -- 58. Il modificatore primary key non è più supportato da msql-2, e dovrebbe essere semplicemente evitato:


    $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

Sfortunatamente, questo script accetterà nuovi elementi con identico numero di personale; il modificatore msql-1 primary key intende prevenire esattamente questo comportamento. La documentazione msql-2 mostra come usare la clausola CREATE INDEX per ottenere elementi univoci.


Avanti Indietro Indice