<!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ò 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. <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. È possibile porre il database (che verrà 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> <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> </PRE> <HR> <P>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. <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ò 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 è 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 <CODE>primary key</CODE> non è più supportato da msql-2, e dovrebbe essere semplicemente evitato: <HR> <PRE> $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 </PRE> <HR> <P>Sfortunatamente, questo script accetterà 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>