Série de conférences ASP (16) Accès à la base de données
Auteur:Eve Cole
Date de mise à jour:2009-05-30 19:58:46
ActiveX Data Objects (ADO) est une technologie facile à utiliser et extensible permettant d'ajouter un accès à une base de données aux pages Web. Vous pouvez utiliser ADO pour écrire des scripts compacts et concis afin de vous connecter à des bases de données compatibles Open Database Connectivity (ODBC) et à des sources de données compatibles OLE DB. Si vous êtes un scripteur possédant une certaine connaissance des connexions aux bases de données, vous constaterez que les instructions de commande ADO ne sont ni compliquées ni faciles à maîtriser. De même, si vous êtes un programmeur de bases de données expérimenté, vous apprécierez les capacités avancées d'ADO en matière d'indépendance linguistique et de traitement des requêtes.
Création du fichier ODBC DSN Avant de créer le script de base de données, vous devez fournir à ADO un moyen de localiser, d'identifier et de communiquer avec la base de données. Le pilote de base de données utilise un nom de source de données (DSN) pour localiser et identifier une base de données spécifique compatible ODBC afin de transmettre les informations de l'application Web à la base de données. En règle générale, un DSN contient des informations sur la configuration de la base de données, la sécurité des utilisateurs et l'emplacement, et peut être obtenu sous forme de table dans une clé de registre Windows NT ou sous forme de fichier texte.
Avec ODBC, vous pouvez choisir le type de DSN que vous souhaitez créer : utilisateur, système ou fichier. Les DSN utilisateur et système sont stockés dans le registre Windows NT. Le DSN du système permet à tous les utilisateurs connectés à un serveur spécifique d'accéder à la base de données, tandis que le DSN de l'utilisateur restreint les connexions à la base de données à des utilisateurs spécifiques utilisant les informations d'identification de sécurité appropriées. Le fichier DSN est utilisé pour obtenir des tableaux à partir de fichiers texte, donne accès à plusieurs utilisateurs et peut être facilement transféré d'un serveur à un autre en copiant le fichier DSN. Pour ces raisons, les exemples de cette rubrique utilisent des DSN de fichiers.
Vous pouvez créer des fichiers basés sur DSN en ouvrant le Panneau de configuration à partir du menu Démarrer de Windows. Double-cliquez sur l'icône ODBC, sélectionnez la page de propriétés Fichier DSN, cliquez sur Ajouter, sélectionnez le pilote de base de données et cliquez sur Suivant. Suivez les instructions ci-dessous pour configurer le DSN de votre logiciel de base de données.
Configuration du fichier DSN pour la base de données Microsoft Access
Dans la boîte de dialogue Créer une nouvelle source de données, sélectionnez Pilote Microsoft Access dans la zone de liste, puis cliquez sur Suivant.
Tapez le nom de votre fichier DSN et cliquez sur Suivant.
Cliquez sur Terminer pour créer la source de données.
Dans la boîte de dialogue Installation ODBC Microsoft Access 97, cliquez sur Sélectionner. Sélectionnez le fichier de base de données Microsoft Access (*.mdb) et cliquez sur OK.
REMARQUE Pour des raisons de performances et de fiabilité, nous vous recommandons fortement d'utiliser un moteur de base de données client-serveur pour configurer les données pilotées par les applications Web qui doivent être accessibles à plus de 10 utilisateurs simultanément. Bien qu'ASP puisse utiliser n'importe quelle base de données compatible ODBC, il est conçu et rigoureusement testé pour être utilisé avec des bases de données client-serveur, notamment Microsoft ®
ASP prend en charge les bases de données de fichiers partagés (telles que Microsoft Access ou FoxPro) en tant que sources de données valides. Bien que certains exemples de la documentation ASP utilisent des bases de données de fichiers partagés, nous recommandons d'utiliser de tels moteurs de base de données uniquement pour des scénarios de développement ou de déploiement limité. Les bases de données de fichiers partagés peuvent ne pas convenir aux bases de données client-serveur destinées aux applications Web de haute qualité et à forte demande.
Configurer le fichier de base de données SQL Server DSN
Remarque Si la base de données réside sur un serveur distant, contactez l'administrateur du serveur pour obtenir des informations de configuration supplémentaires ; la procédure suivante utilise les paramètres ODBC par défaut de SQL Server, qui peuvent ne pas s'appliquer à votre configuration matérielle.
Dans la boîte de dialogue Créer une nouvelle source de données, sélectionnez SQL Server dans la zone de liste, puis cliquez sur Suivant.
Tapez un nom pour le fichier DSN et cliquez sur Suivant.
Cliquez sur Terminer pour créer la source de données.
Tapez le nom, l'ID de connexion et le mot de passe du serveur exécutant le programme de service SQL.
Dans la boîte de dialogue Créer une nouvelle source de données pour SQL Server, tapez le nom du serveur qui contient la base de données SQL Server dans la zone de liste Serveur, puis cliquez sur Suivant.
Sélectionnez comment vérifier votre identifiant de connexion.
Si vous choisissez l'authentification du serveur SQL, entrez un identifiant de connexion et un mot de passe, puis cliquez sur Suivant.
Dans la boîte de dialogue Créer une nouvelle source de données pour SQL Server, définissez la base de données par défaut, le pilote pour les paramètres de procédure stockée et l'identification ANSI, puis cliquez sur Suivant. (Pour plus d'informations, cliquez sur Aide.)
Dans la boîte de dialogue (également nommée Créer une nouvelle source de données pour SQL Server), sélectionnez une méthode de conversion de caractères, puis cliquez sur Suivant. (Pour plus d'informations, cliquez sur Aide.)
Dans la boîte de dialogue suivante (également nommée « Créer une nouvelle source de données pour SQL Server »), sélectionnez les paramètres de connexion.
Remarque En règle générale, vous pouvez uniquement utiliser les journaux pour déboguer les problèmes d'accès à la base de données.
Dans la boîte de dialogue Installation de Microsoft SQL Server ODBC, cliquez sur Tester la source de données. Si le DSN a été créé correctement, la boîte de dialogue Résultats du test indiquera que le test s'est terminé avec succès.
Informations sur la connexion au serveur SQL et la sécurité Si vous développez une application de base de données ASP qui se connecte à une base de données SQL Server distante, vous devez prendre en compte les problèmes suivants :
Options de connexion - Vous pouvez choisir entre des sockets TCP/IP et des canaux nommés pour accéder à la base de données SQL Server distante. Lors de l'utilisation de canaux nommés, étant donné que l'utilisateur de la base de données doit être authentifié auprès de Windows NT avant qu'une connexion puisse être établie, les utilisateurs disposant des identités d'accès SQL Server appropriées mais sans compte d'utilisateur Windows NT sur l'ordinateur peuvent se voir refuser l'accès au canal nommé. Alternativement, une connexion utilisant des sockets TCP/IP peut être connectée directement au serveur de base de données sans passer par un ordinateur intermédiaire utilisant des canaux nommés. Étant donné que vous pouvez vous connecter directement au serveur de base de données à l'aide d'une connexion socket TCP/IP, les utilisateurs peuvent accéder via l'authentification SQL Server sans avoir à s'authentifier via Windows NT.
Remarque L'utilisation de sockets TCP/IP peut améliorer les performances lors de la connexion à des bases de données distantes.
Sécurité - Si vous utilisez les fonctionnalités de sécurité intégrées ou mixtes de SQL Server et que la base de données SQL Server se trouve sur un serveur distant, vous ne pouvez pas utiliser l'accusé de réception de demande/réponse de Windows NT. Autrement dit, l'ID de demande/réponse Windows NT ne peut pas être transmis à l'ordinateur distant, mais seule l'authentification de base peut être utilisée, basée sur les informations de nom d'utilisateur et de mot de passe de l'utilisateur.
Pour plus d'informations sur ce sujet, consultez http://www.microsoft.com/sqlsupport/
Page d'accueil du support technique Microsoft SQL Server.
Configurer le fichier de base de données Oracle DSN
Assurez-vous d'abord que le logiciel utilisateur Oracle est correctement installé sur l'ordinateur sur lequel le DSN doit être créé. Pour plus d'informations, contactez l'administrateur de votre serveur ou consultez la documentation de votre logiciel de base de données.
Dans la boîte de dialogue Créer une nouvelle source de données, sélectionnez Microsoft ODBC pour Oracle dans la zone de liste, puis cliquez sur Suivant.
Tapez un nom pour le fichier DSN et cliquez sur Suivant.
Cliquez sur Terminer pour créer la source de données.
Entrez votre nom d'utilisateur, votre mot de passe et le nom de votre serveur, puis cliquez sur OK.
Remarque Les fichiers DSN ont une extension .dsn et se trouvent dans le répertoire ProgramsCommon FilesODBCData Sources.
Pour plus d'informations sur la création de fichiers DSN, visitez le site Web Microsoft ODBC : http://microsoft.com/odbc/.
Connexion à la base de données La première étape pour accéder aux informations de la base de données consiste à établir une connexion à la source de la base de données. ADO fournit un objet Connection qui peut être utilisé pour établir et gérer les connexions entre les applications et les bases de données ODBC. L'objet Connection possède diverses propriétés et méthodes que vous pouvez utiliser pour ouvrir et fermer des connexions à la base de données et effectuer des requêtes pour mettre à jour les informations.
Pour établir une connexion à une base de données, vous créez d’abord une instance de l’objet Connection. Par exemple, le script suivant crée un objet Connection, puis ouvre une connexion à la base de données :
<%
'Créer un objet de connexion
Définir cn = Server.CreateObject("ADODB.Connection")
'Ouvrez une connexion ; la chaîne fait référence au DSN.
cn.Ouvrez "FILEDSN=MyDatabase.dsn"
%>
Remarque La chaîne DSN ne peut pas contenir d'espaces, ni avant ni après le signe égal (=).
Dans ce cas, la méthode Open de l'objet Connection fait référence à un fichier basé sur DSN qui contient des informations d'emplacement et de configuration sur la base de données. Vous pouvez également référencer explicitement le fournisseur, la source de données, l'ID utilisateur et le mot de passe sans faire référence au DSN.
Exécution d'une requête avec un objet Connection À l'aide de la méthode Execute de l'objet Connection, vous pouvez émettre une requête SQL (Structured Query Language) vers une source de base de données et récupérer les résultats. SQL est le langage standard de l'industrie pour communiquer avec les bases de données et comporte de nombreuses commandes pour récupérer et mettre à jour les informations.
Le script suivant utilise la méthode Execute de l'objet Connection pour émettre une requête dans une table à l'aide d'une commande SQL INSERT, qui insère des données dans une table de base de données spécifique. Dans l'exemple suivant, le script insère le nom Jose Lugo dans une table de base de données nommée Customers.
<%
'Définir un DSN basé sur un fichier
strDSN = "FILEDSN=MaBasedeDonnées.dsn"
'Instanciez l'objet Connection et ouvrez une connexion à la base de données
Définir cn = Server.CreateObject("ADODB.Connection")
cn.Ouvrir strDSN
'Définir l'instruction SQL SELECT
strSQL = "INSÉRER DANS LES VALEURS Clients (Prénom, Nom) ('Jose','Lugo')"
'Utilisez la méthode Execute pour émettre une requête SQL vers la base de données
cn.Execute(strSQL)
%>
Notez que les fichiers basés sur des chaînes de chemin DSN ne doivent pas contenir d'espaces avant et après le signe égal (=).
Outre la commande SQL INSERT, vous pouvez également utiliser les commandes SQL UPDATE et DELETE pour modifier et supprimer les informations de la base de données.
À l'aide de la commande SQL UPDATE, vous pouvez modifier la valeur de chaque élément de la table de base de données. Le script suivant utilise la commande UPDATE pour remplacer le champ FirstName de chaque enregistrement de la table Customers dont le champ LastName contient le nom de famille Smith par Jeff.
<%
Définir cn = Server.CreateObject("ADODB.Connection")
cn.Ouvrez "FILEDSN=MyDatabase.dsn"
cn.Exécutez « UPDATE Customers SET FirstName = 'Jeff' WHERE LastName = 'Smith' »
%>
Pour supprimer des enregistrements spécifiques d'une table de base de données, utilisez la commande SQL DELETE. Le script suivant supprime toutes les lignes portant le nom de famille Smith de la table Customers :
<%
Définir cn = Server.CreateObject("ADODB.Connection")
cn.Ouvrez "FILEDSN=MyDatabase.dsn"
cn.Exécutez « DELETE FROM Customers WHERE LastName = 'Smith' »
%>
Remarque Vous devez faire preuve de prudence lorsque vous utilisez la commande SQL DELETE. Lorsque vous utilisez la commande DELETE sans clause WHERE, elle supprime toutes les lignes du tableau. Assurez-vous d'inclure la clause SQL WHERE pour spécifier les lignes exactes à supprimer.
Utilisation d'objets Recordset pour traiter les résultats Bien que l'objet Connection simplifie la tâche de connexion à une base de données et d'interrogation, l'objet Connection présente encore de nombreuses lacunes. Plus précisément, l'objet Connection qui récupère et affiche les informations de la base de données ne peut pas être utilisé pour créer des scripts ; vous devez savoir exactement quelles modifications vous souhaitez apporter à la base de données avant de pouvoir utiliser des requêtes pour implémenter les modifications.
Pour récupérer des données, vérifier les résultats et modifier la base de données, ADO fournit des objets Recordset. Comme son nom l'indique, l'objet Recordset possède un certain nombre de fonctionnalités que vous pouvez utiliser pour récupérer et afficher un ensemble de lignes de base de données, ou « enregistrements », en fonction des contraintes de votre requête. Un objet Recordset contient l'emplacement des enregistrements renvoyés par une requête, vous permettant de parcourir les résultats un par un.
En fonction du paramètre de propriété PointerType de l'objet Recordset, vous pouvez faire défiler et mettre à jour les enregistrements. Les pointeurs de base de données vous permettent de localiser un élément spécifique dans un ensemble d'enregistrements. Les pointeurs sont également utilisés pour récupérer et examiner des enregistrements, puis effectuer des opérations basées sur ces enregistrements. Les objets Recordset possèdent des propriétés qui vous permettent de contrôler avec précision le comportement des pointeurs, améliorant ainsi votre capacité à inspecter et à mettre à jour les résultats. Par exemple, vous pouvez utiliser les propriétés CursorType et CursorLocation pour définir le type d'un pointeur, renvoyer les résultats à l'application client (les résultats sont généralement conservés sur le serveur de base de données) et afficher les dernières modifications apportées à la base de données par d'autres utilisateurs. .
Récupération d'enregistrements Une application de base de données réussie utilise l'objet Connection pour établir le lien et l'objet Recordset pour traiter les données renvoyées. En « coordonnant » les fonctionnalités spécifiques de deux objets, vous pouvez développer une application de base de données capable d’effectuer presque toutes les tâches de traitement de données. Par exemple, le script côté serveur suivant utilise un objet Recordset pour exécuter une commande SQL SELECT. La commande SELECT récupère un ensemble d'informations basées sur les restrictions de requête. La requête contient également une clause SQL WHERE, utilisée pour restreindre la portée de la requête. Dans cet exemple, la clause WHERE limite la requête à tous les enregistrements contenant le nom de famille Smith dans la table de base de données Customers.
<%
'Établir une connexion avec la source de données
strDSN = "FILEDSN=MaBasedeDonnées.dsn"
Définir cn = Server.CreateObject("ADODB.Connection")
cn.Ouvrir strDSN
'Instancier un objet Recordset
Définir rsCustomers = Server.CreateObject("ADODB.Recordset")
'Ouvrir un jeu d'enregistrements à l'aide de la méthode Open
' et utilise la connexion établie par l'objet Connection
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Smith' "
rsCustomers.Open strSQL, cn
'Parcourez l'ensemble d'enregistrements et affichez les résultats
' et incrémenter la position d'enregistrement avec la méthode MoveNext
Définir objFirstName = rsCustomers("FirstName")
Définir objLastName = rsCustomers("LastName")
Faire jusqu'à rsCustomers.EOF
Response.Write objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
Boucle
%>
Notez que dans l'exemple précédent, l'objet Connection a été utilisé pour établir la connexion à la base de données et l'objet Recordset a utilisé la connexion pour récupérer les résultats de la base de données. Cette méthode est utile lorsque vous devez définir exactement comment établir un lien vers la base de données. Par exemple, si vous devez spécifier le temps d'attente avant l'échec d'une tentative de connexion, vous devez utiliser l'objet Connection pour définir les propriétés. Toutefois, si vous souhaitez uniquement établir une connexion à l'aide des propriétés de connexion par défaut d'ADO, vous devez utiliser la méthode Open de l'objet Recordset pour établir le lien :
<%
strDSN = "FILEDSN=MaBasedeDonnées.dsn"
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Smith' "
Définir rsCustomers = Server.CreateObject("ADODB.Recordset")
'Ouvrir une connexion en utilisant la méthode Open
'et utilise la connexion établie par l'objet Connection
rsCustomers.Open strSQL, strDSN
'Parcourez l'ensemble d'enregistrements, affichez les résultats,
' et incrémenter la position d'enregistrement avec la méthode MoveNext
Définir objFirstName = rsCustomers("FirstName")
Définir objLastName = rsCustomers("LastName")
Faire jusqu'à rsCustomers.EOF
Response.Write objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
Boucle
%>
Lors de l'utilisation de la méthode Open de l'objet Recordset pour établir une connexion, l'objet Connection doit être utilisé pour assurer la sécurité de la connexion.
Utilisation de l'objet Command pour améliorer les requêtes Avec l'objet Command ADO, vous pouvez exécuter des requêtes comme vous le feriez avec les objets Connection et Recordset. La seule différence est qu'avec l'objet Command, vous pouvez préparer, compiler et itérer votre requête sur la base de données. source en utilisant un ensemble de valeurs différent. L'avantage de compiler les requêtes de cette manière est que vous pouvez minimiser le temps nécessaire pour émettre à plusieurs reprises des requêtes modifiées sur les requêtes existantes. Alternativement, vous pouvez laisser une requête SQL partiellement indéfinie avant son exécution via les options de la partie variable de votre requête.
La collection de paramètres de l'objet Command vous évite d'avoir à reconstruire la requête à chaque fois qu'elle est rééditée. Par exemple, si vous devez régulièrement mettre à jour les informations sur l'approvisionnement et les prix dans un système Web basé sur les stocks, vous pouvez prédéfinir la requête comme suit :
<%
'Ouvrir une connexion à l'aide de l'objet Connexion Objet Commande
'n'a pas de méthode Open pour établir une connexion
strDSN = "FILEDSN=MaBasedeDonnées.dsn"
Définir cn = Server.CreateObject("ADODB.Connection")
cn.Ouvrir strDSN
'Instancier l'objet Command ; utilisez la propriété ActiveConnection pour attacher
'connexion à l'objet Commande
Définir cm= Server.CreateObject("ADODB.Command")
Définir cm.ActiveConnection = cn
'Définir une requête SQL
cm.CommandText = "INSÉRER DANS L'inventaire (Matériau, Quantité) VALEURS (?, ?)"
'Enregistrer une version préparée (ou précompilée) de la requête spécifiée dans CommandText
'propriété avant la première exécution d'un objet Command.
cm.Préparé = Vrai
'Définir les informations de configuration des paramètres de requête
cm.Parameters.Append cm.CreateParameter("material_type",200, ,255 )
cm.Parameters.Append cm.CreateParameter("quantité",200, ,255 )
'Définir et exécuter la première insertion
cm("material_type") = "ampoules"
cm("quantité") = "40"
cm.Exécuter
'Définir et exécuter la deuxième insertion
cm("material_type") = "fusibles"
cm("quantité") = "600"
cm.Exécuter
%>
Vérifiez l'exemple ci-dessus et vous remarquerez que le script crée et émet à plusieurs reprises une requête SQL avec des valeurs différentes sans redéfinir ni renvoyer la requête à la source de la base de données. La compilation de requêtes avec des objets Command évite également les problèmes de fusion des variables de chaîne et de table provoqués par les requêtes SQL. En particulier, les problèmes associés à la définition des types de variables de chaîne, de date et d'heure peuvent être évités en utilisant la collection Parameter de l'objet Command. Par exemple, une valeur de requête SQL contenant "'" peut entraîner l'échec de la requête :
strSQL = "INSÉRER DANS LES VALEURS Clients (Prénom, Nom) ('Robert', 'O'Hara')"
Notez que le nom de famille O'Hara contient un "'", qui entre en conflit avec le "'" utilisé pour représenter les données dans le mot clé SQL VALUES. Ce type de problème peut être évité en liant la valeur de la requête en tant que paramètre d'objet Command.
Combinaison de tableaux HTML et de bases de données L'accès à une page Web contenant un tableau HTML permet aux utilisateurs d'interroger à distance une base de données et de récupérer des informations spécifiques. À l'aide d'ADO, vous pouvez créer des scripts très simples pour collecter des informations sur les tables utilisateur, créer des requêtes de base de données personnalisées et renvoyer des informations à l'utilisateur. À l'aide de l'objet ASP Request, vous pouvez récupérer les informations saisies dans un tableau HTML et incorporer ces informations dans une instruction SQL. Par exemple, le module de script suivant insère les informations fournies par un tableau HTML dans un tableau. Ce script utilise la collection Form d'objets Request pour collecter des informations utilisateur.
<%
'Ouvrez une connexion à l'aide de l'objet Connection.
'n'a pas de méthode Open pour établir une connexion
strDSN = "FILEDSN=MaBasedeDonnées.dsn"
Définir cn = Server.CreateObject("ADODB.Connection")
cn.Ouvrir strDSN
'Objet Commande instantanée
'et utilisez la propriété ActiveConnection pour attacher
'connexion à l'objet Commande
Définir cm= Server.CreateObject("ADODB.Command")
Définir cm.ActiveConnection = cn
'Définir une requête SQL
cm.CommandText = "INSÉRER DANS LES VALEURS MySeedsTable (Type) (?)"
'Définir les informations de configuration des paramètres de requête
cm.Parameters.Append cm.CreateParameter("type",200, ,255 )
'Définir et exécuter l'insertion
cm("type") = Requête("TypeSeed")
cm.Exécuter
%>
Gestion des connexions aux bases de données Le plus grand défi lors de la conception d'une application de base de données Web robuste, telle qu'une application d'achat en ligne servant des milliers de clients, consiste à gérer les connexions aux bases de données de manière appropriée. L'ouverture et le maintien d'une connexion à une base de données, même lorsqu'aucune information n'est transférée, peuvent consommer considérablement les ressources du serveur de base de données et entraîner des problèmes de connectivité. Une application de base de données Web bien conçue recyclera les connexions aux bases de données et sera capable de compenser les retards causés par la congestion du réseau.
Causer des délais d'attente de connexion Une augmentation soudaine de l'activité peut rendre le serveur de base de données très lourd, augmentant considérablement le temps nécessaire pour établir une connexion à la base de données. Par conséquent, une latence de connexion excessive dégradera les performances de la base de données.
À l’aide du ConnectionTimeout de l’objet Connection, vous pouvez limiter le temps d’attente d’une application avant d’abandonner la tentative de connexion et d’émettre un message d’erreur. Par exemple, le script suivant définit la propriété ConnectionTimeout pour qu'elle attende 20 secondes avant d'annuler une tentative de connexion :
Définir cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 20
cn.Ouvrez "FILEDSN=MyDatabase.dsn"
La propriété ConnectionTimeout par défaut est de 30 secondes.
Remarque Avant d'incorporer la propriété ConnectionTimeout dans une application de base de données, assurez-vous que le fournisseur de connexion et la source de données prennent en charge la propriété.
Connexions partagées Les applications de base de données Web qui établissent et rompent fréquemment des connexions à la base de données peuvent dégrader les performances du serveur de base de données. ASP prend en charge une gestion efficace des connexions à l'aide des fonctionnalités de partage d'ODBC 3.5. Le partage de connexion maintient les connexions de base de données ouvertes et gère le partage de cette connexion entre différents utilisateurs pour maintenir ses performances et réduire le nombre de connexions inactives. Pour chaque demande de connexion, le pool de connexions détermine d'abord s'il existe une connexion inactive dans le pool. S'il est présent, le pool de connexions renvoie la connexion plutôt que d'établir une nouvelle connexion à la base de données.
Si vous souhaitez que votre pilote ODBC participe au partage de connexion, vous devez configurer le pilote de base de données et définir la propriété CPTimeout du pilote dans le registre Windows NT. Lorsque ODBC se déconnecte, la connexion est regroupée plutôt que déconnectée. La propriété CPTimeout détermine la durée pendant laquelle une connexion est conservée dans le pool de connexions. Si une connexion reste dans le pool plus longtemps que le paramètre CPTimeout, la connexion sera fermée et supprimée du pool. La valeur par défaut de CPTimeout est de 60 secondes.
Vous pouvez activer le regroupement de connexions pour un pilote de base de données ODBC spécifique en définissant de manière sélective la propriété CPTimeout en créant un jeu de clés de registre comme suit :
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIdriver-nameCPTimeout = délai d'attente
(REG_SZ, les unités sont en secondes)
Par exemple, la clé suivante définit le paramètre de délai d'expiration du pool de connexions du pilote SQL Server sur 180 secondes (3 minutes).
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INISQL ServerCPTimeout = 180
Remarque Par défaut, le serveur Web active le pool de connexions de SQL Server en définissant CPTimeout sur 60 secondes.
Utilisation de connexions entre pages Bien que vous puissiez réutiliser les connexions entre pages en stockant les connexions dans l'objet Application d'ASP, garder la connexion ouverte à tout moment n'est pas nécessaire et ne permet pas de tirer pleinement parti des avantages du regroupement de connexions. Si de nombreux utilisateurs doivent se connecter à la même application de base de données ASP, une bonne approche consiste à réutiliser la connexion à la base de données en plaçant la chaîne de connexion entre pages dans l'objet Application ASP. Par exemple, vous pouvez spécifier la chaîne de connexion dans la procédure événementielle Application_OnStart du fichier Global.asa, comme indiqué dans le script suivant :
Application.lock
Application("ConnectionString") = "FILEDSN=MaDatabase.dsn"
Application.déverrouiller
Ensuite, dans chaque fichier ASP qui accède à la base de données, écrivez :
<OBJECT RUNAT=ID Serveur=cn PROGID="ADODB.Connection"> </OBJECT>
Pour créer une instance de l'objet de connexion, utilisez le script suivant :
cn.Ouvrir l'application ("ConnectionString")
Pour les connexions ouvertes, vous pouvez écrire le script suivant à la fin de la page pour fermer la connexion :
cn.Fermer
Dans les situations où un seul utilisateur doit réutiliser une connexion entre pages, il est préférable d'utiliser la connexion d'objet Session plutôt que l'objet Application.
Fermez la connexion Si vous souhaitez mieux utiliser le pool de connexions, vous devez fermer la connexion à la base de données dès que possible. Par défaut, la connexion sera interrompue une fois l'exécution du script terminée. La fermeture d'une connexion lorsqu'elle n'est plus nécessaire réduit les demandes sur le serveur de base de données et rend la connexion disponible aux autres utilisateurs.
Vous pouvez utiliser la méthode Close de l'objet Connection pour mettre fin à la connexion entre l'objet Connection et la base de données. Le script suivant ouvre la connexion puis la ferme :
<% strDSN = "FILEDSN=MaBasedeDonnées.dsn"
Définir cn = Server.CreateObject("ADODB.Connection")
cn.Ouvrir
cn.Fermer
%>