> Tech > Exploration des objets de base de données

Exploration des objets de base de données

Tech - Par iTPro - Publié le 24 juin 2010
email

L'application ASP.NET impose aux utilisateurs de s'authentifier pour accéder à  d'autres pages que Default.aspx. La première fois que cette dernière s'ouvre au cours d'une session Web, elle affiche un lien vers la page Login.aspx qui appelle la procédure stockée IsValidMember. Avant d'aborder le code VB.NET utilisé pour appeler IsValidMember et

pour
traiter la valeur de statut retournée,
nous allons d’abord examiner le fonctionnement
des objets de la base de
données.
Le listing 1 présente le code T-SQL
de la procédure stockée IsValidMember.
En cas d’authentification réussie,
les paramètres @inID et @inpassword
désignent les valeurs des colonnes
MemberID et MemberPW correspondant
à  une ligne de la table IDInfo.
Hormis dans un cas particulier, la procédure
stockée retourne la valeur 1 si
les paramètres @inID et @inpassword
correspondent à  des valeurs de colonne
pour une ligne de IDInfo.
Autrement (à  savoir si les paramètres
ne correspondent à  aucune valeur de
colonne dans IDInfo), la procédure
stockée IsValidMember retourne la valeur
0. Toutefois, même en cas de correspondance
avec les valeurs de colonnes
dans la table IDInfo, la valeur de
statut 0 sera retournée si la valeur de
colonne ExpiryDate pour la valeur
MemberID de la ligne au niveau de la
table ExpiryDates est antérieure à  la
date en cours.
Pour implémenter sa logique, la procédure stockée
IsValidMember utilise une instruction SELECT avec une jointure
interne entre les tables IDInfo et ExpiryDates. Les arguments
de la clause WHERE servent à  contrôler les conditions
de correspondance requises. Une instruction IF transfère le
contrôle à  l’instruction finale, laquelle retourne une valeur 1
(authentifié) ou 0 (non authentifié).
Le code sous-jacent à  la page Login.aspx n’utilise pas la
syntaxe T-SQL pour appeler la procédure stockée IsValid-
Member. Toutefois, lors du débogage d’applications ASP.NET
qui appellent des procédures stockées, il est possible de tester le fonctionnement de ces dernières
dans l’Analyseur de requêtes
(Query Analyzer). Le code suivant
montre une approche permettant de
tester la procédure stockée :

DECLARE @return_status int
Exec @return_status =
IsValidMember 'HN1', 'HDoe1'
SELECT @return_status AS 'Return Status'

La valeur de @return_status sera 1
si HN1 et HDoe1 sont les valeurs de
MemberID et de mot de passe d’une
ligne de la table IDInfo.
La vue CurrentMembers utilise le
même type d’instruction SELECT que la
procédure stockée IsValidMember. En
particulier, les deux instructions SELECT
réalisent une jointure entre la
table ExpiryDates et une autre table, et
la clause WHERE inclut un critère reposant
une comparaison entre la valeur
de colonne ExpiryDate et la date courante. Toutefois, à  la différence
de la procédure stockée, la vue retourne à  partir de
la table ContactInfo un ensemble de résultats contenant les
valeurs des colonnes FirstName, LastName, EmailAddr et
Phone. Cet ensemble de résultats sert à  remplir un contrôle
DataGrid affichant les informations de contact de tous les
membres répertoriés.
Non seulement l’application SqlMagMemberApp valide
le statut d’adhésion des utilisateurs, mais elle leur permet de
modifier leurs mots de passe et informations de contact. La
procédure stockée EditMyPassword du listing 2 présente la
syntaxe T-SQL de mise à  jour des mots de
passe utilisateur. Cette procédure accepte
deux paramètres en entrée : @inID
désigne dans la table IDInfo la valeur de
colonne MemberID pour laquelle la valeur
de colonne MemberPW doit être modifiée.
@inpassword spécifie le nouveau
mot de passe. Une instruction UPDATE affecte
la nouvelle valeur de mot de passe.
Bien que la procédure stockée utilise des
identificateurs (ii et ed) faisant respectivement
référence aux tables IDInfo et ExpiryDates
pour les expressions dans les clauses ON et WHERE,
un identificateur est inapproprié pour la clause SET de l’instruction
UPDATE, car les noms de colonne de cette clause
doivent provenir de la table indiquée après le mot-clé UPDATE.
Les procédures stockées ShowMyRow et EditMyRow
fonctionnent conjointement dans l’application ASP.NET. La
première fournit les données visibles dans les zones de texte
affichant les informations de contact pour le membre identifié
dans la session ASP.NET en cours. La deuxième utilise en
entrée des paramètres fournis par l’application à  partir des
zones de texte et actualise une ligne dans la table
ContactInfo avec une valeur de colonne MemberID correspondant
au membre de la session en cours.
L’encadré A du listing 3 présente le code T-SQL de la
procédure stockée ShowMyRow. Il comporte les mêmes
expressions de clause FROM et WHERE que la procédure
stockée EditMyRow présentée dans l’encadré B. Toutefois, la
procédure stockée ShowMyRow utilise une instruction SELECT
pour retourner une ligne, alors que EditMyRow emploie
une instruction UPDATE pour modifier une ligne. La liste de paramètres de la procédure stockée EditMyRow
affecte une valeur par défaut NULL au paramètre @inPh si la
routine appelante omet cet argument. L’exemple d’application
ASP.NET tire parti de cette fonctionnalité pour affecter
un NULL à  la valeur de colonne Phone si la zone de texte
Phone sur la page de formulaire Web est une chaîne de texte
vide («  »), ce qui n’est pas la même chose qu’une valeur NULL.

Téléchargez gratuitement cette ressource

Guide de Cloud Privé Hébergé

Guide de Cloud Privé Hébergé

Comment permettre aux entreprises de se focaliser sur leur cœur de métier, de gagner en agilité, réactivité et résilience en s’appuyant sur un socle informatique performant, évolutif et sécurisé ? Découvrez les avantages des solutions de Cloud Privé hébergé de la CPEM.

Tech - Par iTPro - Publié le 24 juin 2010