Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1300

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Server Web basati su mSQL e perl mini HOWTO: Esecuzione di un database di esempio</TITLE>
 <LINK HREF="WWW-mSQL-HOWTO-5.html" REL=next>
 <LINK HREF="WWW-mSQL-HOWTO-3.html" REL=previous>
 <LINK HREF="WWW-mSQL-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="WWW-mSQL-HOWTO-5.html">Avanti</A>
<A HREF="WWW-mSQL-HOWTO-3.html">Indietro</A>
<A HREF="WWW-mSQL-HOWTO.html#toc4">Indice</A>
<HR>
<H2><A NAME="s4">4. Esecuzione di un database di esempio</A></H2>

<P>
<P>Dopo il completamento dell'installazione del sistema si pu&ograve; finalmente
eseguire una modello di applicazione. A seconda della versione di msql 
installata e dell'interfaccia perl utilizzata si dovr&agrave; modificare il 
programma di esempio in qualche punto.
<P>Innanzitutto, il file <CODE>index.html</CODE> posto in <CODE>/home/httpd/html/</CODE> 
deve essere modificato per permettere di richiamare l'applicazione database 
campione. &Egrave; possibile porre il database (che verr&agrave; chiamato <CODE>database.cgi</CODE> o
<CODE>inventur.cgi</CODE> nonostante il nome del file <CODE>perl.lst.ck</CODE>) nella 
directory <CODE>/home/httpd/html/test/</CODE>.
<P>Per ottenere lo scopo, appendere una linea (naturalmente dipendente dalle
scelte di installazione) simile alla seguente nel file <CODE>index.html</CODE>:
<HR>
<PRE>
&lt;LI>Test the &lt;A HREF="test/database.cgi">Database, DBI:DBD-mSQL style!&lt;/A>
&lt;LI>Test the &lt;A HREF="test/inventur.cgi">Database, MsqlPerl style!&lt;/A>
</PRE>
<HR>
<P>Solitamente si dovrebbe mantenere una sola di queste due scelte, ma disponendo
di entrambi i tipi di interfaccia database installata &egrave; possibile lasciare 
entrambe le linee cos&igrave; come sono. Sar&agrave; in seguito possibile comparare le 
prestazioni, ecc.
<P>
<H2><A NAME="ss4.1">4.1 Adattamento dello script di esempio per MsqlPerl</A>
</H2>

<P>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 <CODE>use</CODE>:
<HR>
<PRE>
#
# use DBI;            # Interfaccia Database Generica
use Msql;
</PRE>
<HR>
<P>Poi, alla linea 27, la sintassi MsqlPerl non richiede la menzione di un 
driver specifico:
<P>
<HR>
<PRE>
# $dbh = DBI->connect($host, $database, '', $driver) ||
$dbh = Msql->connect($host, $database) ||
</PRE>
<HR>
<P>Poi, dalla linea 33 per tutto l'intero script, bisogna modificare tutte le 
istanze di <CODE>do</CODE> con <CODE>query</CODE>:
<P>
<HR>
<PRE>
# $dbh->do("SELECT * FROM hw") || db_init($dbh);
$dbh->query("SELECT * FROM hw") || db_init($dbh);
</PRE>
<HR>
<P>Infine, la linea 207 deve essere commentata:
<P>
<HR>
<PRE>
# $sth->execute || msg("SQL Error:", $sth->errstr);
</PRE>
<HR>
<P>Inoltre, pu&ograve; diventare necessario scambiare tutte le chiamate <CODE>errstr</CODE> 
come quella nel precedente frammento di codice con <CODE>errmsg</CODE>.
Anche questa scelta dipende dalla versione.
<P>Dopo queste modifiche, lo script dovrebbe girare senza intoppi.
<P>
<H2><A NAME="ss4.2">4.2 Adattamento dello script di esempio per for msql-2</A>
</H2>

<P>La sintassi SQL &egrave; stata ridefinita durante lo sviluppo di msql-2. Lo script
originale fallir&agrave; l'esecuzione delle istruzioni di inizializzazione tabella 
nelle linee 45 -- 58. Il modificatore <CODE>primary key</CODE> non &egrave; pi&ugrave; 
supportato da msql-2, e dovrebbe essere semplicemente evitato:
<HR>
<PRE>
    $dbh->do(&lt;&lt;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(&lt;&lt;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
</PRE>
<HR>
<P>Sfortunatamente, questo script accetter&agrave; nuovi elementi con identico
numero di personale; il modificatore msql-1 <CODE>primary key</CODE> intende
prevenire esattamente questo comportamento. La documentazione msql-2 
mostra come usare la clausola <CODE>CREATE INDEX</CODE> per ottenere elementi
univoci.
<P>
<HR>
<A HREF="WWW-mSQL-HOWTO-5.html">Avanti</A>
<A HREF="WWW-mSQL-HOWTO-3.html">Indietro</A>
<A HREF="WWW-mSQL-HOWTO.html#toc4">Indice</A>
</BODY>
</HTML>