Page suivantePage précédenteTable des matières

4. Un exemple de Base de Données

Après avoir terminé la procédure d'installation, nous pouvons maintenant lancer l'application donnée en exemple. En fonction de la version de msql installée et de l'interface perl utilisée, nous devrons modifier un peu ce programme.

Tout d'abord, le fichier index.html, dans le répertoire /home/httpd/html/ doit être modifié pour appeler l'application exemple. Nous pouvons mettre notre base (que nous pouvons appeler database.cgi ou inventur.cgi) dans /home/httpd/html/test.

Nous ajoutons une ligne parmi les suivantes dans index.html (à choisir, bien sûr, en fonction des choix d'installation) :


<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>

Vous ne devez en principe choisir qu'une seule des deux lignes précédentes, mais vous pouvez, si vous avez installé les deux types d'interface, laisser les deux lignes telles quelles. Vous pourrez alors comparer les performances.

4.1 Adaptation de l'exemple de script pour MsqlPerl

Il est nécessaire d'indiquer, dans notre exemple de script, qu'il faut utiliser l'interface MsqlPerl. La modification doit être faite à plusieurs endroits. D'abord, au début du fichier, il faut changer la clause use :

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

Ensuite, à la ligne 27, MsqlPerl n'exige pas la mention d'un pilote particulier :

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

A partir de la ligne 33 et pour tout le script, changez toutes les occurrences de do par query :

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

Enfin, dans le laius MsqlPerl, la ligne 207 peut être mise en commentaire :

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

De plus, il peut être nécessaire de remplacer tout les appels errstr tels que celui de la ligne précédente par errmsg. Cela dépend de la version utilisée.

Après ces modifications, le script doit tourner correctement.

4.2 Adaptation de l'exemple pour msql-2

La syntaxe SQL a subi des changements durant le développement de msql-2. Le script original n'exécutera pas les instructions d'initialisation de la table, aux lignes 45 -- 48. Le modificateur primary key n'est plus compris par msql-2, et doit être supprimé :

 $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

Malheureusement, ce script particulier acceptera maintenant les enregistrements avec des numéros personnels identiques ; le modificateur msql-1 primary key était justement là pour éviter cela. La documentation msql2 indique comment utiliser la clause CREATE INDEX pour créer des entrées uniques.


Page suivantePage précédenteTable des matières